如何让Windows错误报告(WER)在程序假死时保存内存转储?

5
WER会在应用程序挂起后创建内存转储文件。当Windows显示对话框“ApplicationName没有响应”时,如果用户点击“关闭程序”,我可以看到.hmdmp文件被创建在C:\ProgramData\Microsoft\Windows\WER\Temp中。在将它们发送给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生成卡顿的转储:https://collaborationhelp.cisco.com/article/en-us/WBX85638 - magicandre1981
2个回答

9
在计算机注册表中的 Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Windows Error Reporting\ 创建一个名为 CorporateWerServer 的 REG_SZ 值,并将其值设置为空字符串。由于 Windows 无法连接到公司 WER 服务器,因此挂起转储文件将保留在 C:\ProgramData\Microsoft\Windows\WER\ReportQueue\ 中。

1
这是我唯一可靠的解决方案。 - cjbarth

6
你可以使用WER的ConfigureArchive设置,并将其设置为“2” [全部数据]。这将捕获和存档所有数据(而不仅仅是Report.wer)。
请参见https://learn.microsoft.com/en-us/windows/desktop/wer/wer-settings上的ConfigureArchive
从提升的提示中运行:
Reg add "hklm\software\microsoft\windows\windows error reporting" /f /t REG_DWORD /v ConfigureArchive /d 2

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

嗨,我记不得我们是否测试过 ConfigureArchive,但我会验证它是否有效并更改已接受的答案。 将 CorporateWerServer 更改为空字符串绝对是一种hack - 2ConfigureArchive 看起来更接近我们要寻找的东西。 - Jason
尽管我也在HKCU中设置了值,但这对我没有起作用。 - Ed Bayiates

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接