visual-studio - 使用 Visual Studio 从转储文件中预览堆

标签 visual-studio debugging heap-dump

我对调试转储还很陌生,所以还有一些问题。

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

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

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

最佳答案

您应该使用 WinDbg 和 !heap 命令来检查进程中的 Win32 堆。您会发现此命令有许多有用的变体:!heap -s -h 0 将为您提供统计信息,!heap -h 0 将列出所有 block 所有堆等

您可能还想考虑我的 heap_stat.py 调试器脚本,它会尝试在堆内存中搜索具有 vtable 指针的对象,从而确定占用大量堆空间的对象类别。

https://github.com/goldshtn/windbg-extensions/blob/master/heap_stat.py

关于visual-studio - 使用 Visual Studio 从转储文件中预览堆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18105654/

相关文章:

visual-studio - UWP 的类库和 windows 运行时组件有什么区别

java - -XX :+HeapDumpOnCtrlBreak couldn't create jvm?

debugging - LLVM 翻译单元

c++ - 如何使用 Eclipse 从 Windows 调试 linux C++ 程序?

mysql - 如何调试 MySQL 错误 1242(子查询返回超过 1 行)?

java - 我如何从堆转储中知道一个 Java 对象是在 tenure 空间还是 eden 空间

java - 从 Java 堆转储中查看 StringBuffer 或 char[] 的内容

visual-studio - VS 2010 Server Explorer数据库未显示表

c - Visual Studio 的新安装中未安装标准 C/C++ 库

git - Visual Studio 2017 底部缺少 git 分支指示器