【问题标题】:howto capture stack corruption on 64bit app?如何在 64 位应用程序上捕获堆栈损坏?
【发布时间】:2010-08-19 11:06:49
【问题描述】:

我的 64 位应用程序 (Windows) 崩溃了。我无法通过代码检查或检查调试器中的状态来做任何事情。 (VS2008)

使用一些对值对象实例执行定期检查的检测代码。当我们尝试释放其成员时,该对象似乎处于不一致状态并生成访问冲突。它包含几个值范围非常窄的成员变量,可以作为整体对象一致性的测试。 想法?有什么工具可以帮助找出原因?

【问题讨论】:

  • 您的问题主题说它是一个堆栈损坏问题,您的文本说它是一个堆损坏问题。您需要提供更好的诊断。

标签: c++ memory crash


【解决方案1】:

如果您有可执行文件的调试符号,Visual Studio 会提供相当好的堆栈跟踪。如果这还不够,您可以尝试使用 WinDBG。它有非常强大的堆栈相关命令

【讨论】:

    【解决方案2】:

    首先想到的是您的对象正在被双重删除,并且在第一次删除后内存正在被重用。

    您可以在 Linux 上使用 valgrind 或在 Windows 上使用 Purify (For $$) 来进行内存检查。我相信 MS 也有一个你可以使用的调试 malloc 库,但我没有手头上的细节。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多