【问题标题】:Cannot Open HDMP File无法打开 HDMP 文件
【发布时间】:2017-01-11 14:27:18
【问题描述】:

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

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

提前感谢所有帮助!

【问题讨论】:

  • 我在我的驱动器上找到了 3 个 HDMP 文件,并且可以在 WinDbg 10.0.10586.567 中打开它们。你用的是哪个版本?

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


【解决方案1】:

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

下载调试器

Getting windbg without the whole WDK?

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

!pe 嵌套

应该显示异常链。如果你真的很喜欢记忆,那么使用

!EEHeap -gc

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

!DumpHeap -stat

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

!地址-摘要

有关堆的详细信息

!heap -a

对于特定的堆

!heap -x

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

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

应该做的伎俩。

您也可以使用 procdump 作为 wer 的替代品

过程转储-ma -i

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

希望对你有帮助

【讨论】:

  • 我认为 OP 知道 WinDbg 是什么。他说他收到“文件已损坏”的错误消息
  • 我的坏人没有读过windbg部分。如果 windbg 说它已损坏,则可能是 curropt。使用 procdump 或 debug diag 收集转储。
  • @Addy ya 看起来很糟糕。下次将尝试 procdump 以获取转储。谢谢!
  • @shortspider 请确保您添加了 -ma 开关,否则我们会获得崩溃的小型转储。记得在完成后清除 AeDebug 密钥,否则这个小伙子将继续收集系统中各处的崩溃 :) 一切顺利!快乐的捕获和转储分析。
猜你喜欢
  • 2019-01-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-09
  • 2018-11-30
  • 2015-10-16
  • 2018-08-15
相关资源
最近更新 更多