修电脑最烦的不是别的,最烦的是 Random 蓝屏错误。因为你也不知道什么时候就蓝屏了。这种随机性还有无错误报告的问题最让人头疼。不过其实 Windows 每次蓝屏都会在系统目录下生成一个 Dump File 。也就是所谓分析报告。不过想要看懂这个报告,就需要一些技巧了。
一般来说,读取 Mini Dump 文件,只需要用 Nirsoft 的 BlueScreenView 即可轻松查看。不过这个软件只是轻量级的分析工具。只是给你提供崩溃时间,崩溃代码,引起崩溃的文件,崩溃内存地址等等。需要自己进行手动分析,对于很多小白来说,这就是天书啊。
好吧,那么有没有帮你分析这些天书代码的工具呢?有!那就是 WinDBG 这个 Windows 自己开发的 Debug 工具 – WinDbg。
一、什么是 WinDbg ?
WinDbg是在windows平台下,强大的用户态和内核态调试工具。它能够通过dmp文件轻松的定位到问题根源,可用于分析蓝屏、程序崩溃(IE崩溃)原因,是我们日常工作中必不可少的一个有力工具,学会使用它,将有效提升我们的问题解决效率和准确率。
二、WinDbg 下载地址
蓝屏Dump分析工具 x86位版本下载:【微软官方安装版】
蓝屏Dump分析工具 x64位版本下载:【微软官方安装版】
如果你用的是 Windows 10 的话,建议下载官方 SDK
下载链接
安装选项很多,只需要选择 Debugging Tool For Windows 即可。如图:
三、如何使用 WinDbg
首先,我们需要设置符号表,符号表是WinDbg关键的“数据库”,里边储存着各种蓝屏代码的分析结果。如果没有它,WinDbg基本上就是个废物,无法分析出更多问题原因。
1、运行WinDbg软件,然后按【Ctrl+S】弹出符号表设置窗
2、将符号表地址:SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
粘贴在输入框中,点击确定即可。
注:红色字体为符号表本地存储路径,建议固定路径,可避免符号表重复下载。
当你拿到一个dmp文件后,可使用【Ctrl+D】快捷键来打开一个dmp文件,或者点击WinDbg界面上的【File=>Open Crash Dump…】按钮,来打开一个dmp文件。第一次打开dmp文件时,可能会收到如下提示,出现这个提示时,勾选“Don’t ask again in this WinDbg session”,然后点否即可。
当你想打开第二个dmp文件时,可能因为上一个分析记录未清除,导致无法直接分析下一个dmp文件,此时你可以使用快捷键【Shift+F5】来关闭上一个dmp分析记录。
至此,简单的WinDbg使用你已经学会了!
五、通过简单的几个步骤学会分析一些dmp文件。
1. 随便打开一个 Dump 文件,然后我们可以看到下边有个蓝色的 Analyze 的链接,这个链接就是分析蓝屏的工具链接
然后你可以看到这些信息:
!analyze
-v
*******************************************************************************
*
*
* Bugcheck Analysis *
*
*
*******************************************************************************
WHEA_UNCORRECTABLE_ERROR (124)
A fatal hardware error has occurred.
Parameter 1 identifies the type of error
source that reported the error.
Parameter 2 holds the address of the
WHEA_ERROR_RECORD structure that
describes the error conditon.
Arguments:
Arg1: 0000000000000000, Machine
Check Exception
Arg2: ffff8305fd0dd028, Address of the WHEA_ERROR_RECORD
structure.
Arg3: 00000000b6000004, High order 32-bits of the MCi_STATUS
value.
Arg4: 000000000001010a, Low order 32-bits of the MCi_STATUS value.
Debugging Details:
——————
DUMP_CLASS: 1
DUMP_QUALIFIER: 400
BUILD_VERSION_STRING: 10.0.15063.674 (WinBuild.160101.0800)
SYSTEM_MANUFACTURER: Acer
SYSTEM_PRODUCT_NAME: Aspire ES1-711
SYSTEM_SKU: Aspire ES1-711_0843_1_08
SYSTEM_VERSION: V1.08
BIOS_VENDOR: Insyde Corp.
BIOS_VERSION: V1.08
BIOS_DATE: 10/28/2015
BASEBOARD_MANUFACTURER: Acer
BASEBOARD_PRODUCT: EA70_BM
BASEBOARD_VERSION: Type2 – A01 Board Version
DUMP_TYPE: 2
BUGCHECK_P1: 0
BUGCHECK_P2: ffff8305fd0dd028
BUGCHECK_P3: b6000004
BUGCHECK_P4: 1010a
BUGCHECK_STR: 0x124_GenuineIntel
CPU_COUNT: 4
CPU_MHZ: 877
CPU_VENDOR: GenuineIntel
CPU_FAMILY: 6
CPU_MODEL: 37
CPU_STEPPING: 8
CPU_MICROCODE: 0,0,0,0 (F,M,S,R) SIG: 829’00000000 (cache) 0’00000000 (init)
CUSTOMER_CRASH_COUNT: 1
DEFAULT_BUCKET_ID: WIN8_DRIVER_FAULT
CURRENT_IRQL: 0
ANALYSIS_SESSION_HOST: SERVICE01
ANALYSIS_SESSION_TIME: 10-17-2017 15:18:05.0073
ANALYSIS_VERSION: 10.0.16299.15 amd64fre
STACK_TEXT:
fffff801`aa64ca38 fffff801`a824e5cf : 00000000`00000124
00000000`00000000 ffff8305`fd0dd028 00000000`b6000004 :
nt!KeBugCheckEx
fffff801`aa64ca40 fffff801`a84ed2fd : ffff8305`fd0dd028
ffff8305`fc5ac790 ffff8305`fc5ac790 ffff8305`fc5ac790 :
hal!HalBugCheckSystem+0xcf
fffff801`aa64ca80 fffff801`a824eaf8 :
00000000`00000728 00000000`00000000 00000000`00000000 00000000`00000000 :
nt!WheaReportHwError+0x25d
fffff801`aa64cae0 fffff801`a824ee58 :
00000000`00000010 00000000`00000000 fffff801`aa64cc88 00000000`00000000 :
hal!HalpMcaReportError+0x50
fffff801`aa64cc30 fffff801`a824ed46 :
ffff8305`fbea5650 00000000`00000001 00000000`00000000 00000000`00000000 :
hal!HalpMceHandlerCore+0xe0
fffff801`aa64cc80 fffff801`a824ef8a :
00000000`00000004 00000000`00000001 00000000`00000000 00000000`00000000 :
hal!HalpMceHandler+0xda
fffff801`aa64ccc0 fffff801`a824f120 :
ffff8305`fbea5650 fffff801`aa64cef0 00000000`00000000 00000000`00000000 :
hal!HalpMceHandlerWithRendezvous+0xce
fffff801`aa64ccf0 fffff801`a84076bb :
00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 :
hal!HalHandleMcheck+0x40
fffff801`aa64cd20 fffff801`a840742c :
00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 :
nt!KxMcheckAbort+0x7b
fffff801`aa64ce60 fffff801`a83881d3 : 00000000`00000000
00000000`00000000 00000000`00000000 00000000`00000000 :
nt!KiMcheckAbort+0x1ac
ffffa001`1208c898 00000000`00000000 :
00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 :
nt!ST_STORE<sm_traits>::ST_HASH_ENTRY_COMPARATOR::Compare+0x33
THREAD_SHA1_HASH_MOD_FUNC: 1229599e20a8e52284b639d82c0e4b08e5ebac03
THREAD_SHA1_HASH_MOD_FUNC_OFFSET: 947846f6d18d00900d62ba102bf881c74cd600ba
THREAD_SHA1_HASH_MOD: bba6629b38ee48af58586b1285e003efb528212b
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: GenuineIntel
IMAGE_NAME: GenuineIntel
DEBUG_FLR_IMAGE_TIMESTAMP: 0
STACK_COMMAND: .thread ; .cxr ; kb
FAILURE_BUCKET_ID: 0x124_GenuineIntel_PROCESSOR_CACHE
BUCKET_ID: 0x124_GenuineIntel_PROCESSOR_CACHE
PRIMARY_PROBLEM_CLASS: 0x124_GenuineIntel_PROCESSOR_CACHE
TARGET_TIME: 2017-10-17T16:11:46.000Z
OSBUILD: 15063
OSSERVICEPACK: 674
SERVICEPACK_NUMBER: 0
OS_REVISION: 0
SUITE_MASK: 784
PRODUCT_TYPE: 1
OSPLATFORM_TYPE: x64
OSNAME: Windows 10
OSEDITION: Windows 10 WinNt TerminalServer SingleUserTS Personal
OS_LOCALE:
USER_LCID: 0
OSBUILD_TIMESTAMP: 2017-09-29 03:20:26
BUILDDATESTAMP_STR: 160101.0800
BUILDLAB_STR: WinBuild
BUILDOSVER_STR: 10.0.15063.674
ANALYSIS_SESSION_ELAPSED_TIME: 14b0
ANALYSIS_SOURCE: KM
FAILURE_ID_HASH_STRING: km:0x124_genuineintel_processor_cache
FAILURE_ID_HASH: {4c8f3f5e-1af5-ed8b-df14-d42663b1dfa7}
Followup: MachineOwner
最上方的一部分是电脑的基本信息,这部分信息基本没什么用,然后是蓝屏错误的偏移地址。如果你不懂汇编什么的,这部分对你也没什么用。最重要的部分是这里:
从这里可以看出来,出错的模块:MODULE_NAME 是 GenuineIntel,另外错误信息是 0x124_GenuineIntel_PROCESSOR_CACHE ,也就是说 Intel CPU 的缓存出现了错误。基本上可以判定是硬件问题。换个 CPU 试试修理即可。
附:设置 Windows Dump 文件
一般 Windows 默认是直接把所有的信息保存在 Windows 文件夹下的 MEMORY.DMP 文件。不过经常这个文件不存在,或者说你只需要一个 Mini Dump 文件就够了。那么你可以这样设置:
1. Win + Pause ,进入系统信息界面
2. System Protection
4. 将下拉菜单中的 Dump 文件设置改为 Mini Dump
5. 然后再次蓝屏后,Dump 文件会保存在 Windows\Minidump 这个文件夹中。
PS:
另外一些常见的蓝屏错误还有 Driver、显卡 之类的错误。多积累经验就能简单判定了。另外也可以将分析的文件递交给
Microsoft,或者去一些论坛发帖。用下搜索引擎,基本上都可以找到答案的。