完整链路:崩溃、转储、报告、队列
应用撞上未处理的错误时,WER服务和它的小工WerFault.exe会收集基本信息:哪个应用、哪个版本、死在哪个模块里,以及异常签名。它们还可以顺手抓一份转储——进程死亡瞬间的内存冻结快照。报告先落进%ProgramData%\Microsoft\Windows\WER\ReportQueue,上传给微软(如果你调低了诊断级别,就先压在那里),然后移入ReportArchive。内核崩溃住在别处:小型转储堆在C:\Windows\Minidump,完整内核转储躺在C:\Windows\MEMORY.DMP,GPU驱动的实时转储落在C:\Windows\LiveKernelReports。按应用生成的转储,在有人为该应用启用时会出现在%LOCALAPPDATA%\CrashDumps。
这些都不影响系统健康。WER只是记账:记录什么东西坏了,把证据留一阵子,让微软看到数百万台机器上的崩溃规律。报告很小,会膨胀的是转储——重型应用的完整转储能到几百MB,因为它说白了就是该应用当时内存里那份东西的副本。
- %ProgramData%\Microsoft\Windows\WER\ReportQueue —— 等待上传的报告
- %ProgramData%\Microsoft\Windows\WER\ReportArchive —— 已发送或留存的报告
- %LOCALAPPDATA%\CrashDumps —— 启用后按应用生成的.dmp文件
- C:\Windows\Minidump —— 每次蓝屏的小型转储
- C:\Windows\MEMORY.DMP —— 最近一次蓝屏的完整内核转储
- C:\Windows\LiveKernelReports —— GPU和显卡驱动的实时转储(Watchdog)
转储里到底装着什么
转储就是进程内存,而进程内存就是你的数据:当时打开的文档片段、图像缓冲、URL、会话令牌——那应用手里攥着的一切。这正是诊断设置重要的原因。在设置 → 隐私和安全性 → 诊断和反馈里,“必需诊断数据”只发小东西,而“可选诊断数据”才是允许更丰富的内存切片离开你机器的那个开关。对多数人来说,只保留必需数据就足够,崩溃报告照常工作。
在本地,转储只有有人读它才有意义。如果你自己在调试一个反复出现的崩溃——或者把它贴到论坛让别人读——转储就是金矿,用WinDbg这类工具就能读。没人在调试的话,旧转储只是件遗物:一个早已修好、忘掉或认命的崩溃的证据。
不弄坏任何东西的清理
ReportArchive和ReportQueue里的东西全都可以删,连同已经处理过的崩溃的小型转储和MEMORY.DMP文件;等新的东西再坏,Windows自然会再生成新的。存储感知和磁盘清理基本无视这些文件夹,所以这活儿要么手动、要么靠工具——Kleaner PRO这类清理工具会把这些位置连同大小一起列出来,把“几百MB的谜团”变成一个你真能下的决定。删除前唯一值得做的事:如果某个崩溃还在反复出现、你打算发帖求助,先把转储拷出来。
彻底禁用WER(services.msc → Windows错误报告服务)停的是收集,不是崩溃;应用照样死,只是没了报告。而当WerFault.exe明显吃CPU时,几乎总意味着有个程序在循环崩溃——该治的是那个崩溃的应用,不是送信的。把崩溃修好,是让这整套机器闭嘴的唯一一步。
常见问题与解答
删除Windows错误报告安全吗?
安全。WER的ReportArchive和ReportQueue内容加上旧.dmp文件都可以删。你失去的只是本来就没在用的崩溃历史——别的什么都不会坏。
该禁用Windows错误报告吗?
只有在你介意崩溃数据离开机器时才禁用。关掉WER不会让Windows更快或更稳定,只会停掉报告,还让你自己诊断崩溃更麻烦。
继续阅读
联系我们: [email protected]