我正在尝试获取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非常非常慢...
发布于 2013-11-18 16:12:53
我不知道VS,但在WinDBG中,您可以通过kv命令或通过在调用栈窗口中启用地址来打印带有地址的调用栈。如果你用-snul选项启动WinDbg会快很多(或者取消选中调试菜单下的解决不合格的符号)
https://stackoverflow.com/questions/19778444
复制相似问题