Próbuję zadzwonić SymLoadModuleEx
załadować symbole z pliku PDB, a następnie użyć SymFromAddr
patrzeć symbole z tym WPB. Jednak nie mogę dowiedzieć się, co przekazać do parametrów BaseOfDll
i DllSize
- dokumentacja wyraźnie mówi, że podczas ładowania pliku PDB, parametry te nie mogą być 0, a nawet próbuje przejść 0 wyników w to niepowodzeniem z ERROR_INVALID_PARAMETER
.Jak używać SymLoadModuleEx do ładowania pliku PDB?
Oto co mój kod wygląda następująco:
SymSetOptions(SYMOPT_LOAD_LINES);
HANDLE hprocess = GetCurrentProcess();
if (!SymInitialize(hprocess, NULL, FALSE))
die("SymInitialize");
if(SymLoadModuleEx(hprocess, NULL, "full path to some PDB file.pdb", NULL,
0, // What to pass here?
0, // What to pass here?
NULL, 0) == 0)
{
die("SymLoadModuleEx");
}
Jak można dowiedzieć się, co BaseOfDll
i DllSize
przejść w podczas ładowania pliku PDB? Wspomniany plik PDB jest plikiem symboli dla innego pliku wykonywalnego programu (nie biblioteki DLL) i dla samego argumentu przyjmijmy, że nie masz dostępu do oryginalnego pliku EXE, z którego wygenerowano PDB.
Alternatywnie, czy istnieje lepszy sposób patrzenia się symbole odpowiadające danym adresem z pliku PDB?