【发布时间】:2017-10-23 15:43:57
【问题描述】:
我正在尝试使用以下代码加载几个符号模块:
DWORD64 dwBaseDllSymLocal = 0;
SymInitializeW(GetCurrentProcess(), NULL, FALSE);
SymSetOptions(SYMOPT_DEBUG);
dwBaseDllSymLocal = SymLoadModuleExW(GetCurrentProcess(), NULL, L"C:\\module1.dll", NULL, 0, 0, NULL, 0);
if (0 == dwBaseDllSymLocal)
{
__debugbreak();
}
dwBaseDllSymLocal 现在是 10000000。
dwBaseDllSymLocal = SymLoadModuleExW(GetCurrentProcess(), NULL, L"C:\\module2.dll", NULL, 0, 0, NULL, 0);
if (0 == dwBaseDllSymLocal)
{
__debugbreak();
}
Dbghelp 给出以下消息: module1 is already loaded at 10000000。
当我尝试加载同一个模块两次时会发生相同的行为。 (不像函数的documentation中写的那样)。
最后一个错误是ERROR_INVALID_ADDRESS,虽然它看起来并不相关,因为最后一个错误在第一个成功的函数调用之后也有这个值。
是否可以使用SymLoadModuleExW 加载多个模块?这样做的正确方法是什么?
【问题讨论】:
标签: debugging winapi symbols dbghelp