读代码,别读恐慌
蓝屏底部的停止代码和它下方的十六进制数字,是那个屏幕上唯一有用的文字。名称告诉你哪个子系统缴了械——内存、存储栈、某个驱动回调——而十六进制值会进一步收窄嫌疑人名单。二维码和哭脸只是表演;信息就是代码本身。从 Windows 10 起,同样的数据也会落进日志:事件查看器“系统”日志里 ID 为 1001 的 BugCheck 事件,旁边还有可靠性监视器,能看到崩溃前刚装或刚更新的东西。小型转储会落在 C:\Windows\Minidump——那是事件的笔录,不是留待日后的证物。
动手之前,先回答一个问题:有没有规律——特定应用、一次新更新、新硬件?一次崩溃是事件,一周三次就是诊断。每次崩溃都记下代码:两个不同代码交替出现通常指向内存;同一代码反复出现则指向某个具体部件。笔记本上的一行字,能省下好几个小时的盲目重装。
- 趁屏幕没消失,先抄下停止代码和 0x 开头的数字
- 用 WinDbg 或 BlueScreenView 打开 C:\Windows\Minidump 里的小型转储
- 在可靠性监视器里查崩溃前刚安装了什么
- 代码每次都在变?用 mdsched.exe 测内存
- 怪驱动之前,先看硬盘的 SMART 数据
指向硬件的代码
CRITICAL_PROCESS_DIED 听起来像对主板下的死刑判决,但通常是系统文件损坏:能治它的是 sfc /scannow 和 DISM,而不是换零件。UNMOUNTABLE_BOOT_VOLUME 和 KERNEL_DATA_INPAGE_ERROR 属于存储领地:线缆、控制器、正在谢幕的硬盘——先做 SMART 检查、换根新的 SATA 线,两者都比任何诊断便宜。WHEA_UNCORRECTABLE_ERROR 是处理器或内存在抱怨工作条件:把超频和电压恢复出厂值,一半的情况下代码就此消失。
FAULTY_HARDWARE_CORRUPTED_PAGE 几乎总是指向内存条,MEMORY_MANAGEMENT 也是同族:要么是内存本身,要么是某个正在破坏别人页面的驱动。PAGE_FAULT_IN_NONPAGED_AREA 会一口气指控所有人,但转储常常点出真正的元凶——报告里的“What failed”一行或模块名。总原则很简单:讲页面、内存和数据损坏的代码,先跑内存测试;讲卷和文件系统的代码,先看硬盘。
指向驱动与软件的代码
DPC_WATCHDOG_VIOLATION 意味着某个驱动占用处理器的时间超过了许可:经典元凶是 SSD 固件和存储驱动,而一次硬盘固件更新能治好几个月 Windows 重装都治不好的病。DRIVER_IRQL_NOT_LESS_OR_EQUAL 会直接报出嫌疑人姓名——驱动名就写在错误详情和转储里,剩下只是把它对应到设备。NTFS_FILE_SYSTEM 是文件系统损坏或硬盘带病:chkdsk 加 SMART 检查。UNEXPECTED_STORE_EXCEPTION 名字虽然生僻,几乎也总是存储问题:Intel RST 驱动,或同一块垂死的 SSD。
还有一类单独的体裁:不带蓝屏的错误。“此应用无法在你的电脑上运行”不是损坏,而是架构不匹配——你在不属于它的地方启动了 64 位程序或 ARM 版本。日志里成千上万条 WHEA 记录却一次实际崩溃都没有,通常是主板传感器的遥测,而不是死期将至的公告。分界线很简单:系统崩溃意味着转储和代码;应用崩溃意味着那个应用自己的日志。
常见问题与解答
CRITICAL_PROCESS_DIED 错误是什么意思?
一个 Windows 无法离开的进程意外终止了——通常是系统文件损坏,而非垂死的硬件。多数情况下 sfc /scannow 和 DISM /RestoreHealth 就够了。
在哪里找蓝屏的原因?
在事件查看器里:“系统”日志中 ID 为 1001 的 BugCheck 事件。停止代码就记录在那里,细节藏在 C:\Windows\Minidump 下的小型转储里。
继续阅读
联系我们: [email protected]