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