无法打开 HDMP 文件

Cannot Open HDMP File

我在 Windows 服务器 运行 上有一个 C# 应用程序 运行 作为服务。我最近在应用程序中引入了内存泄漏,它已经崩溃了几次 OutOfMemoryExceptions。这些崩溃生成了 WER 报告和转储文件。有两个转储文件,triage.dmp 和 memory.hdmp。我可以很好地打开 triage.dmp 并查看线程状态,但它没有关于应用程序内存的任何信息。我想打开 memory.hdmp 但我不能,同时使用 Visual Studio 和 Windbg 我收到一条错误消息,指出文件已损坏。多个 memory.hdmp 个文件都发生了这种情况。

打开这些文件是否有技巧,或者它们实际上已损坏?如果是,Windows 是否需要一些配置来生成有效的 hdmp 文件? memory.hdmp 是否有调试内存泄漏所需的信息?

在此先感谢您的帮助!

使用Windbg,hdmp文件一般是出现un-handled异常时WER收集的全内存转储。您可能需要使用

下载调试器

Getting windbg without the whole WDK?

如果这是基于 .NET 的托管应用程序,一旦您设置了默认符号路径

!pe -nested

应该向您展示异常链。如果你真的想要记忆,那么使用

!EEHeap -gc

如果你想挖掘特定类型消耗的内存

!DumpHeap -stat

对于本机用户模式堆,您可以 运行

!address -summary

有关堆的详细信息

!heap -a

针对特定堆

!heap -x

我想我错过了 windbg 方面。调试诊断或 procdump 可以帮助收集有效的故障转储。

Procdump -e -w -ma(进程名)/pid

应该可以解决问题。

您也可以使用 procdump 来替代 wer

Procdump -ma -i

阅读更多@https://technet.microsoft.com/en-us/sysinternals/dd996900.aspx

希望对您有所帮助