如何获得 Windows 错误报告 (WER) 以保存内存转储以进行挂起?

Posted

技术标签:

【中文标题】如何获得 Windows 错误报告 (WER) 以保存内存转储以进行挂起?【英文标题】:How do you get Windows Error Reporting (WER) to save memory dumps for hangs? 【发布时间】:2019-03-03 13:16:09 【问题描述】:

WER 在应用程序挂起后创建内存转储。当 Windows 显示对话框 ApplicationName 没有响应 时,如果用户单击 关闭程序,我可以看到在 @ 中创建了 .hdmp 文件987654322@。将它们发送给 Microsoft 后,将创建此文件夹:C:\ProgramData\Microsoft\Windows\WER\ReportArchive\AppHang_WindowsFormsApp5_823dc9208bf3a14f898f39469b7b6a0c6f17c7_3db8b24d_07a39f1b。但是,此文件夹只有一个带有摘要的 .wer 文件。

能否配置 Windows 错误报告以保持内存转储捕获本地磁盘上无响应的应用程序?

我已经尝试过Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\LocalDumps,但它只是为崩溃创建转储,而不是挂起。

【问题讨论】:

使用 procdump -h 为挂起生成转储:collaborationhelp.cisco.com/article/en-us/WBX85638 【参考方案1】:

Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\ 中创建一个名为CorporateWerServer 的REG_SZ 值,并将其值设置为空字符串。由于 Windows 无法联系企业 WER 服务器,因此挂起转储将保留在 C:\ProgramData\Microsoft\Windows\WER\ReportQueue\

【讨论】:

这是唯一对我有用的东西。【参考方案2】:

您可以使用 WER 的 ConfigureArchive 设置并将其设置为“2”[所有数据]。这将捕获并存档所有数据(而不仅仅是 Report.wer)。

请参阅 ConfigureArchive https://docs.microsoft.com/en-us/windows/desktop/wer/wer-settings。

在提升的提示符下,运行:

Reg add "hklm\software\microsoft\windows\windows error reporting" /f /t REG_DWORD /v ConfigureArchive /d 2

设置企业 WER 服务器会导致所有崩溃/挂起报告都留在您的设备上,并且它们永远不会到达 Microsoft。这可能不是理想的解决方案。

【讨论】:

嗨,我不记得我们是否测试过ConfigureArchive,但我会验证它是否有效并更改接受的答案。将 CorporateWerServer 更改为空字符串绝对是一种 hack - 2 中的 ConfigureArchive 听起来更接近我们想要的。 这对我不起作用,即使我也在 HKCU 中设置了值。

以上是关于如何获得 Windows 错误报告 (WER) 以保存内存转储以进行挂起?的主要内容,如果未能解决你的问题,请参考以下文章

从 Outlook COM 加载项手动触发 Windows 错误报告

有啥方法可以为 Windows 临时目录执行 WER“请求附加文件”吗?

如何巧妙利用PSR监控Windows桌面

Win32:如何崩溃?

如何使用 WER 请求其他数据?

Dependency Walker 报告 IESHIMS.DLL 和 WER.DLL 丢失?