3

我对调试转储非常陌生,所以仍有一些问题。

我已经阅读了一些关于调试转储的问题,现在我已将我的代码附加到转储中,并且可以看到一些变量值。

我的问题是如何预览原始堆数据。我想要这个,因为转储非常大,超过 4GB,所以某个地方存在很大的内存泄漏,这可能是导致崩溃的原因。所以会寻找一些剩下的字符串。

顺便提一句。我正在使用 C++ 进行编码并使用 Visual Studio 2012 进行调试,但我可以下载一些其他程序 :)

4

1 回答 1

2

您应该使用 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

于 2013-08-20T11:41:37.943 回答