首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >windows中的调试堆栈溢出?

windows中的调试堆栈溢出?
EN

Stack Overflow用户
提问于 2009-04-02 13:50:12
回答 5查看 2.9K关注 0票数 5

所以我正在尝试调试这个奇怪的问题,在这个问题中,进程在没有调用析构函数的情况下结束...

在VS (2005)调试器中,我点击了'Break all‘,并查看了misteriously进程的线程的调用堆栈,当我看到以下内容时:

smells like SO http://img6.imageshack.us/img6/7628/95434880.jpg

这看起来肯定像是一个正在形成的SO,这将解释为什么这个过程在没有事先打包行李箱的情况下就会运行到它的快乐之地。

问题是,VS调试器的调用堆栈只显示您在图像中看到的内容。

所以我的问题是:我如何才能找到无限递归调用的起点?

我在somewhere上读到,在Linux中,你可以将一个回调附加到SIGSEGV处理程序中,并获得更多关于正在发生的事情的信息。

Windows上有没有类似的东西?

EN

Stack Overflow用户

回答已采纳

发布于 2009-04-02 15:42:23

若要控制Windows在发生访问冲突时执行的操作 (SIGSEGV-equivalent),请调用SetErrorMode (向其传递参数0以在出现错误时强制弹出窗口,从而允许您使用调试器附加到该弹出窗口)。

但是,根据您已经获得的堆栈跟踪,在调试器出现故障的情况下附加可能不会产生任何额外的信息。您的堆栈已损坏,或者递归深度已超过VS可显示的最大帧数。在后一种情况下,您可能想要减少process的默认堆栈大小(使用项目属性中的/F开关或等效选项),以使问题更早地显现出来,并确保VS将显示所有帧。或者,您可能希望在std::basic_filebuf<>::flush()中放置一个断点,并遍历它直到销毁阶段(或者禁用它直到销毁阶段之前)。

票数 3
EN
查看全部 5 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/709795

复制
相关文章

相似问题

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