如何在64位应用程序上捕获堆栈损坏?

时间:2010-08-19 11:06:49

标签: c++ memory crash

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

使用一些检测代码执行值对象实例的定期检查。此对象似乎处于不一致状态,并在我们尝试释放其成员时生成访问冲突。它包含几个具有非常窄的值范围的成员变量,可用作对整体对象一致性的测试。 思考?任何有助于发现原因的工具?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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