Я пытаюсь вызвать 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?