首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Windows for C++程序上获取栈帧

在Windows for C++程序上获取栈帧
EN

Stack Overflow用户
提问于 2013-11-05 06:24:39
回答 1查看 193关注 0票数 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非常非常慢...

EN

回答 1

Stack Overflow用户

发布于 2013-11-18 16:12:53

我不知道VS,但在WinDBG中,您可以通过kv命令或通过在调用栈窗口中启用地址来打印带有地址的调用栈。如果你用-snul选项启动WinDbg会快很多(或者取消选中调试菜单下的解决不合格的符号)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19778444

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档