蓝屏(BSOD)排查
场景
服务器自己重启了,事件日志里有 Kernel-Power 41,或者面板上留下 MEMORY.DMP。
前置条件
- 确认是蓝屏而不是断电(看事件日志和 dump 文件)
- 打开了转储:系统属性 → 高级 → 启动和故障恢复
- 有 WinDbg 或者能拿到 dump 文件
配置
先确认转储配置:
Get-ItemProperty "HKLM:\SYSTEM\CurrentControlSet\Control\CrashControl" |
Select-Object CrashDumpEnabled, DumpFile, MinidumpDir
CrashDumpEnabled:0 无、1 小内存、2 内核、3 完全、7 自动。
收集信息:
# 最近的异常关机
Get-WinEvent -FilterHashtable @{LogName='System'; Id=41,1001,6008} -MaxEvents 10 |
Format-Table TimeCreated, Id, ProviderName -AutoSize
# 小内存转储
Get-ChildItem C:\Windows\Minidump\ | Sort-Object LastWriteTime -Descending
分析(WinDbg Preview 打开 dump):
!analyze -v
lmvm <驱动名>
!sysinfo machineid
验证
看 BugCheck 代码和 Probably caused by : xxx.sys,再对照驱动版本和厂商。
回滚
- 如果是刚更新的驱动/补丁引起的,卸载更新或回滚驱动
- 硬件问题(内存、硬盘)只能换件
坑
- dump 文件默认不生成,要在崩溃前就配好,事后补不了。
Kernel-Power 41只能说明「异常关机」,不一定是蓝屏,也可能是断电或硬件掉电。- 服务器上蓝屏多是驱动、内存、RAID 卡固件,桌面机才是各种软件。
- 小内存转储(minidump)信息有限,定位驱动够用,定位逻辑错误不够。
- 反复蓝屏先跑内存诊断(
mdsched.exe)和硬盘 SMART。 - 别在生产机上随便打开「完全内存转储」,C 盘会被占满。