我正在尝试从堆栈中获取的地址中获取符号,但SymFromAddr因系统错误126而失败(无法找到指定的模块。)
我正在使用
SymInitialize(m_processHandle, NULL, TRUE);
(最后一个参数== true ==>它会自动加载PDB)
我像这样使用SymFromAddr:
SYMBOL_INFO_PACKAGE sym = { sizeof(sym) };
sym.si.MaxNameLen = MAX_SYM_NAME;
DWORD64 displacement = 0;
bool ok = SymFromAddr(m_processHandle, address, &displacement, &sym.si);
代码在Windows上使用C ++。 并且PDB文件在EXE的目录中! 我究竟做错了什么? 谢谢:))
答案 0 :(得分:1)
SymFromAddr有点反复无常。
您可以在以下代码中找到一些想法 http://code.google.com/p/nprof/source/browse/0.11/Hook/StackWalker.cpp?r=281