【发布时间】:2015-07-02 08:51:56
【问题描述】:
我正在尝试在生产机器上调试我的应用程序。它大约每 2 天崩溃一次,我不知道为什么。
我这几天一直在尝试让生产机器在程序崩溃时生成完整的崩溃转储。有时确实如此,但有时,它不会生成完整的故障转储,而是创建简短的文本文件,简单地列出所有加载的模块并说明程序崩溃。这些短文件保存在 %LOCALAPPDATA%\Microsoft\Windows Error Reporting\ReportArchive 中。
对于我的一生,我无法理解为什么会这样!我不能要求这些用户运行 adplus 或 windbg 或类似的东西。每次程序崩溃时,我只需要创建一个崩溃转储。
有人可以帮忙吗?我附上了 WER 的完整注册表设置。这些存在于 HKEY_LOCAL_MACHINE\Software\Wow6432Node 和 64 位节点上。如您所见,LocalDumps 键指向 C:\ProgramData\Microsoft\Windows\WER\LocalDumps 以保存故障转储,是的,每个人都拥有此文件夹的完全权限。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting]
"ErrorPort"="\\WindowsErrorReportingServicePort"
"MaxQueueSizePercentage"=dword:00000001
"PurgeThreshholdValueInKB"=dword:0000000a
"Disabled"=dword:00000000
"MaxQueueCount"=dword:00000032
"DisableQueue"=dword:00000000
"LoggingDisabled"=dword:00000000
"DontSendAdditionalData"=dword:00000000
"AutoApproveOSDumps"=dword:00000001
"MaxQueueSize"=dword:00000400
"ForceQueue"=dword:00000001
"DontShowUI"=dword:00000001
"ConfigureArchive"=dword:00000002
"MaxArchiveCount"=dword:000001f4
"DisableArchive"=dword:00000000
"LastQueuePesterTime"=hex(b):57,18,42,be,ba,81,d0,01
"LastLiveReportFlushTime"=hex(b):87,cf,56,3d,bc,81,d0,01
"LastQueueNoPesterTime"=hex(b):4d,39,bb,3a,51,97,d0,01
"LastRateLimitedDumpGenerationTime"=hex(b):87,84,74,9b,90,85,d0,01
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\BrokerUp]
"WWAJSE"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\Consent]
"SQLException64"=dword:00000004
"SQLException"=dword:00000004
"DefaultConsent"=dword:00000004
"DefaultOverrideBehavior"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\Debug]
"ExceptionRecord"=hex:de,fa,ed,0e,01,00,00,00,00,00,00,00,98,45,4d,75,07,00,00,\
00,81,f8,46,00,dc,37,49,00,88,37,49,00,00,00,00,00,c0,fe,18,00,fc,fe,18,00,\
1c,f9,18,00,02,00,00,00,04,f9,18,00,00,00,00,00,0c,f9,18,00,96,27,40,00,da,\
3b,40,00,f0,0c,45,00,e2,31,40,00
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\HeapControlledList]
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\HeapControlledList\dwm.exe]
"EnableHeapThrottle"=dword:00000001
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\LocalDumps]
"DumpFolder"="C:\\ProgramData\\Microsoft\\Windows\\WER\\LocalDumps"
"DumpCount"=dword:0000000a
"DumpType"=dword:00000002
"CustomDumpFlags"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\RuntimeExceptionHelperModules]
"C:\\Windows\\Microsoft.NET\\Framework\\v4.0.30319\\mscordacwks.dll"=dword:00000000
[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\Windows Error Reporting\WMR]
"Disable"=dword:00000001
【问题讨论】:
-
所以有人只是随机投票结束这个问题,并没有说明原因?
-
您是否尝试过通过在 LocalDumps 键下添加您的应用程序来覆盖global WER settings?不确定它是否会起作用,但是,WER 很挑剔,所以值得一试。
-
@rrrower - 感谢您的回答。我确实尝试过,但那是在我更改 Microsoft\Windows\Windows 错误报告中的一堆设置之前。我想我可以再试一次。
-
WER 由操作系统实现。操作系统是 64 位的,所以它总是在 64 位节点中查找。摆脱 Wow6432Node 注册表设置。您说“这些存在......并且在 64 位节点上”,但您没有向我们展示 64 位设置(这是重要的设置)。
标签: crash-reports postmortem-debugging windows-error-reporting