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