1

我使用SymLoadModuleEx的是Dbghelp.hVS2015 附带的。该函数只工作一次,并ERROR_INVALID_ADDRESS为下一次调用返回。当我更改调用顺序以便为另一个 DLL(完全不同,甚至位于其他地方)调用它时,它会工作一次并返回ERROR_INVALID_ADDRESS给其他人。

这意味着它不是加载DLL的问题,因为无论第一个DLL它都不起作用。

它的初始化如下:

SymSetOptions(SYMOPT_UNDNAME | SYMOPT_LOAD_LINES);
SymInitialize(CurrentProcessHandle = GetCurrentProcess(), nullptr, true);

并且被称为:

SymLoadModuleEx(CurrentProcessHandle, nullptr, DllName.c_str(), nullptr, dwBaseAddr, 0, nullptr, 0);

DllName 正确,dwBaseAddr 为 0。

根据MSDN SymLoadModuleEx 功能,一切都应该正常工作。

4

0 回答 0