0

我正在尝试在 C++ 程序中获取堆栈跟踪和符号信息。我按照这篇文章描述的方法:http ://code-freeze.blogspot.com/2012/01/generating-stack-traces-from-c.html 基本思路是使用DbgHelp库,使用StackWalk64来获取堆栈帧的地址。

在我的程序中,主程序加载其他dll并调用dll中的函数。当我尝试在主程序中使用 print_stack()(假设我将实现放在名为 print_stack 的函数中)时,该方法有效。但是,如果我尝试从 dll 调用 print_stack(),则结果没有意义。我试图将两个 print_stack() 函数调用放在一个调用链上的两个位置。理想情况下,打印的堆栈帧地址的一部分应该相同,但事实并非如此。所以我怀疑 StackWalk64 没有获得正确的堆栈帧地址。

以前有人见过这样的问题吗?

反正有知道正确的堆栈帧地址吗?Visual Studio 调试器不提供地址信息。WinDbg 非常非常慢...

4

1 回答 1

0

I don't know about VS, but in WinDBG you can print a callstack with addresses by the kv command, or by enabling addresses in the callstack window. WinDbg is a lot faster if you start it up with the -snul option (or uncheck the Resolve Unqualified Symbols under the Debug menu)

于 2013-11-18T08:12:52.927 回答