如何在Backtracing中获取文件名和行号?

时间:2012-09-17 21:51:23

标签: c windows winapi backtrace

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

Win32 - Backtrace from C code

但是获取文件名和行号怎么样?我尝试使用SymGetLineFromAddr64但无法获取此调试信息。

1 个答案:

答案 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;