我看到了从以下帖子中获取符号名称的一种非常好的方法。
但是获取文件名和行号怎么样?我尝试使用SymGetLineFromAddr64但无法获取此调试信息。
答案 0 :(得分:3)
如果您无法获得此调试信息,并且您的代码是正确的,则问题可能出在选项上。您需要SYMOPT_LOAD_LINES
才能加载此信息:
SymSetOptions(SYMOPT_LOAD_LINES);
然后,假设您正在使用您提供的链接中的代码,它将是这样的:
DWORD dwDisplacement;
IMAGEHLP_LINE64 line;
SymGetLineFromAddr64(process, (DWORD64)stack[i], &dwDisplacement, &line);
现在,您可以访问这些line
成员(来自IMAGEHLP_LINE64 structure):
DWORD LineNumber;
PTSTR FileName;