Я пытаюсь вызвать SymLoadModuleEx
для загрузки символов из файла PDB, а затем использовать SymFromAddr
для поиска символов из этого PDB. Однако я не могу понять, что передать параметрам BaseOfDll
и DllSize
- в документации явно указано, что при загрузке файла PDB эти параметры не могут быть 0 и действительно пытаются передать 0 результатов, в противном случае с ERROR_INVALID_PARAMETER
,Как вы используете SymLoadModuleEx для загрузки PDB-файла?
Вот что мой код выглядит следующим образом:
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");
}
Как вы выяснить, что BaseOfDll
и DllSize
пройти в при загрузке PDB файла? Файл PDB, о котором идет речь, является файлом символа для другого исполняемого файла программы (а не библиотеки DLL) и только ради аргумента, предположим, что у вас нет доступа к исходному EXE, из которого был создан PDB.
В качестве альтернативы, есть ли лучший способ поиска символов, соответствующих данному адресу из файла PDB?