我試圖呼叫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)的符號文件,並且只是爲了爭論,假設您無權訪問生成PDB的原始EXE。
另外,是否有更好的方法來查找PDB文件中給定地址對應的符號?