0

我从下面的帖子中看到了一种很好的获取符号名称的方法。

Win32 - C 代码的回溯

但是如何获取文件名和行号。我尝试使用 SymGetLineFromAddr64 但无法获得此调试信息。

4

1 回答 1

3

如果您无法获得此调试信息,并且您的代码是正确的,那么问题可能出在选项上。您需要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;
于 2012-09-17T22:43:46.037 回答