无法打开HDMP文件

时间:2017-01-11 14:27:19

标签: c# visual-studio memory-leaks windbg dump

我有一个在作为服务运行的Windows Server上运行的C#应用​​程序。我最近在应用程序中引入了内存泄漏,并且已经使用OutOfMemoryException s崩溃了几次。这些崩溃产生了WER报告和转储文件。有两个转储文件,triage.dmp和memory.hdmp。我可以打开triage.dmp并查看线程状态,但它没有关于应用程序内存的任何信息。我想打开memory.hdmp但是我不能同时使用Visual Studio和Windbg我收到错误声明文件已损坏。这发生在多个memory.hdmp文件中。

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

提前感谢所有帮助!

1 个答案:

答案 0 :(得分:1)

使用Windbg,当存在未处理的异常时,hdmp文件通常是WER收集的完整内存转储。您可能希望使用

下载调试器

Getting windbg without the whole WDK?

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

  

!pe -nested

应该显示异常链。如果你真的在记忆之后,那么使用

  

!EEHeap -gc

如果你想挖掘特定类型的消费记忆

  

!DumpHeap -stat

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

  

!address -summary

对于堆详细信息

  

!heap -a

对于特定堆

  

!heap -x

我想我错过了windbg方面。 Debug diag或procdump可以帮助收集有效的崩溃转储。

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

应该做的伎俩。

您也可以使用procdump替代wer

Procdump -ma -i

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

希望这有帮助