我对调试转储非常陌生,所以仍有一些问题。
我已经阅读了一些关于调试转储的问题,现在我已将我的代码附加到转储中,并且可以看到一些变量值。
我的问题是如何预览原始堆数据。我想要这个,因为转储非常大,超过 4GB,所以某个地方存在很大的内存泄漏,这可能是导致崩溃的原因。所以会寻找一些剩下的字符串。
顺便提一句。我正在使用 C++ 进行编码并使用 Visual Studio 2012 进行调试,但我可以下载一些其他程序 :)
我对调试转储非常陌生,所以仍有一些问题。
我已经阅读了一些关于调试转储的问题,现在我已将我的代码附加到转储中,并且可以看到一些变量值。
我的问题是如何预览原始堆数据。我想要这个,因为转储非常大,超过 4GB,所以某个地方存在很大的内存泄漏,这可能是导致崩溃的原因。所以会寻找一些剩下的字符串。
顺便提一句。我正在使用 C++ 进行编码并使用 Visual Studio 2012 进行调试,但我可以下载一些其他程序 :)
您应该使用 WinDbg 和!heap
命令来检查进程中的 Win32 堆。这个命令有很多变体,你会发现它们很有用:!heap -s -h 0
会给你统计数据,!heap -h 0
列出所有堆中的所有块,等等。
您可能还想考虑我的 heap_stat.py 调试器脚本,它将尝试在堆内存中搜索具有 vtable 指针的对象,从而确定哪些对象类别占用了大量堆空间。
https://github.com/goldshtn/windbg-extensions/blob/master/heap_stat.py