【问题标题】:Windows Error Reporting doesn't generate mini dump for a .NET 4 application sometimesWindows 错误报告有时不会为 .NET 4 应用程序生成小型转储
【发布时间】:2015-08-24 14:50:36
【问题描述】:

我正在尝试diagnose a crash issue for a .NET 4 application。上次它在用户机器中崩溃时,Windows 错误报告不会收集应用程序的小型转储。我检查了注册表中的DumpFolder,我可以找到旧崩溃的转储文件,但最后一个没有新的转储文件。

崩溃的事件日志说:

应用程序:MyApp.exe
框架版本:v4.0.30319
说明:由于 IP 000007FEEC0F25E8 (000007FEEC0B0000) 的 .NET 运行时出现内部错误,退出代码为 80131506,进程已终止。

通过一些搜索,它看起来像是 CLR x64 中著名的并发 GC 错误。事件日志也不同于以前的崩溃。在以前的事件日志中,他们明确表示发生了“访问冲突”。退出代码是一样的。

我不能使用adplusprocdump 来获取故障转储,因为它们会显着降低性能。我想知道为什么这次 WER 没有得到 mini dump?

【问题讨论】:

  • 您究竟是如何告诉 WER 创建转储的?您的注册表设置是什么?
  • 一些潜在原因:注册表设置不正确、磁盘已满、文件夹权限错误、应用程序中未处理的异常处理程序、除 WER 之外的 AeDebug 设置
  • 同样的事情发生在我身上。崩溃时某些应用程序不会生成转储(如 word)。

标签: .net clr crash-dumps windows-error-reporting


【解决方案1】:

转储文件可能已被处理并发送到 Microsoft 服务器上的 WER 收集系统。您应该能够通过检查路径来验证...

C:\Users\xxxxx\AppData\Local\Microsoft\Windows\WER\ReportArchive

话虽如此,没有什么能阻止你陷入垃圾场。您需要设置一些 registry values 来完成此操作。我已经在之前的answer 中将过程发布到了类似的问题。

【讨论】:

  • 用户看不到 WER 对话框,并且这次在 DumpFolder 下没有故障转储,但我们可以在那里找到旧转储。如果我们使用Environment.FailFast 使同一台机器上的应用程序崩溃,我们也可以获得崩溃转储。我相信系统默认设置工作正常 - 期待上次。
  • @Jeffrey Zhao WER 在收集转储时不歧视。它不会挑选要收集的转储。如果您想收集转储,我已经给您提供了一种在发送之前在本地捕获它的方法。您的首要任务是解决崩溃问题,还是找出“Windows 错误报告不生成小型转储”的原因?
  • 当时我正试图弄清楚为什么“Windows 错误报告不生成迷你转储”,但它在前后都成功生成了迷你转储。你说的设置已经设置好了,是系统默认的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多