【DUMP】蓝屏终止

14 篇文章 1 订阅
13 篇文章 1 订阅
蓝屏

蓝屏是Windows中用于提示严重的系统级错误的一种方式,其出现时整个屏幕的背景为蓝色。
蓝屏一旦出现,Windows系统便宣告终止,只有重新启动才能恢复到桌面环境。因此蓝屏又被称为蓝屏终止(Blue Screen Of Death,BSOD)。

蓝屏机制的设计思想

将系统终止在导致错误的第一现场,并且把这个现场的信息显示给用户或永远保存下来(比如保存到转储文件),这样有力于更快地发现问题根源,解决bug。
蓝屏的另一种名字是错误检查(Bug Check),很多用于实现蓝屏机制的内核函数都带有BugCheck字样。

产生蓝屏的一些情况

因为产生蓝屏会终止整个系统的运行,所以,蓝屏是Windows中代价最高的错误提示方式。因此,只有在发生了及其严重(救都救不回来的那种)的错误,或者其他错误提示方式无法工作时,才会使用蓝屏来提示错误:

  1. 系统捕捉到内核代码中的未处理异常,或者检测到违反操作系统规则的情况。Windows信任内核代码(运行在内核态的驱动程序也包括在内),一旦内核代码出错了,它就用蓝屏的方式来“抗议”一下:)
  2. 系统检测到操作系统的数据结构、模块或进程遭到破坏。 比如CSRSS(Windows子系统的服务器进程)被终止会产生蓝屏。这个方法比较快捷,强行触发蓝屏可以用这个 |ू・ω・` )
  3. 在系统安装、启动或退出等边缘状态时发生错误。由于此时还不具备其他方式提示错误的能力,所以只能以蓝屏方式提示╮(╯▽╰)╭
蓝屏中有些啥?
  1. 错误信息。用以描述错误情况和错误原因的文字信息
  2. 解决错误的建议。对于同一版本的Windows,这段信息只要出现就是相同的,所以通常没啥实际意义 ︿( ̄︶ ̄)︿
  3. 技术信息。其格式为“STOP:停止码(参数1,参数2,参数3,参数4)”,其中,停止码代表了导致蓝屏的根本原因,是诊断蓝屏故障的重要技术资料。停止代码后面括号中的参数用来进一步描述错误原因,其含义因停止码不同而不同,代表了更深层次的错误信息。
  4. 显示内存转储(Dump)的过程和结果。
蓝屏的发起和产生过程

这个是内核代码用的,不深入研究了。。。
两个DDI(Device Driver Interface)用于提示蓝屏错误:
KeBugCheck
KeBugCheckEx

诊断蓝屏错误
  1. 根据蓝屏的停止码和蓝屏参数作初步的判断
  2. 分析转储文件。系统会默认蓝屏产生小型转储文件的默认位置为Windows目录的MiniDump文件夹,文件名为:MMDDYY-???-XX.dmp,其中MMDDYY(月日年)是蓝屏发生的日期,XX是序号,从01开始,依次递增。比如:081719-20687-01.dmp

用WinDbg分析内核模式Dump文件:

可以使用WinDbg来分析内核模式内存转储文件。运行WinDbg的处理器平台和Windows版本不需要和生成dump文件的机器一样。

启动WinDbg
和-z 命令行选项一起启动WinDbg来分析dump文件:

windbg -y SymbolPath -i ImagePath -z DumpFileName 

-v选项(详细模式)也很有用。关于这些选项的完整列表,查看WinDbg命令行选项。

如果WinDbg已经在运行并且处于静止模式,可以通过File | Open Crash Dump菜单命令或按下CTRL+D快捷键来打开dump文件。当Open Crash Dump 对话框出现后,在File name 文本框输入dump文件的全路径和名字,或使用对话框来选择合适的路径和文件名。选定需要的文件后,点击Open。

可以在调试器已经运行之后使用.opendump (Open Dump File)命令后跟g (Go)命令来打开dump文件。

可以同时调试多个dump文件。可以通过在命令行中包含多个-z 开关(每个后跟一个不同的文件名),或者使用.opendump 将更多的dump文件作为调试目标。关于如何控制多目标调试会话的信息,查看调试多个目标。

Dump文件一般是以.dmp 或.mdmp扩展名结尾的。可以使用网络共享或通用命名约定(Universal Naming Convention (UNC))的名字来命名内存dump文件。

Dump文件也经常被打包为CAB文件。如果在-z选项或.opendump 命令后指定了文件名(包含.cab扩展名),调试器可以直接从CAB中读取dump文件。但是,如果单个CAB包中存在多个dump文件,调试器一次只能读取它们中的一个。调试器不会在CAB中读取任何其他文件,即使有和dump文件关联的符号文件或其他文件。

分析Dump文件
如果分析内核Dump或小内存Dump,需要设置可执行映像路径以指向所有在崩溃时加载到内存中的可执行文件。查看可执行映像路径获取详细信息。

分析dump文件和分析其他活动调试会话类似。查看调试器命令参考小节来获得调试内核模式dump文件时可用命令的详细信息。

大多数情况下,应该首先使用!analyze。这个扩展命令可以对dump文件进行自动分析,并且常常会给出很多有用信息。

.bugcheck (Display Bug Check Data)显示错误检查代码和它的参数。查看错误检查代码参考获得关于特定错误的信息。

下面这些调试器扩展命令对于分析内核模式崩溃转储也非常有用:

!drivers 
!kdext*.locks 
!memusage 
!vm 
!errlog 
!process 0 0 
!process 0 7 


关于从dump文件中读取特定种类信息的技术,查看从Dump文件中获取信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值