日期:2014-05-17  浏览次数:20693 次

定位导致Windows蓝屏的代码的方法

?

一、简述

?????? Windows操作系统在遇到内核级别的错误或异常的时候,会通过蓝屏的方式终止计算机的运行,目的是为了防止计算机进一步受到伤害,起到保护操作系统和计算机的作用。但是,对于用户来说,计算机的蓝屏,是一件非常令人恼怒的事情,毕竟计算机蓝屏时提供的错误信息对于普通用户来说太不友好了,除了前篇一律的“请检查最近安装的硬件或软件”之类的没什么价值的提示之外,还给出了一段二进制的错误码,让人无从找到出错的原因。

?????? 有的用户可能比较有钻研精神,会Baidu一下或Google一下,看看这错误代码到底是什么含义,以及如何解决这样的蓝屏问题,从网上搜寻的答案要么是计算机中病毒了,建议重装系统,要么是告诉你硬件驱动有问题等等笼统的说法。

这些说法对于普通用户来讲,可能他们说那好,我重装系统吧,我换一个硬件吧,大多就能解决问题,可对于我们程序员,如果是因为自己的软件导致了系统的蓝屏,这样的答案就显得有答非所问了,对自己去定位到底是什么组件和自己的软件冲突了,甚至是哪一行代码写的有问题导致系统的蓝屏,是没有丝毫的帮助的。大多数的程序员对于蓝屏问题是一筹莫展的,不知道去调查蓝屏问题应该如何下手,其实,Windows是提供了工具WinDbg来分析蓝屏问题的,利用好了WinDbg就掌握了定位蓝屏问题的切入点。

?

二、WinDbgdump文件介绍

通过设置,当系统发生错误时,如蓝屏了,就会在系统目录下产生一个Dump文件,如MEMORY.DMP?。这个文件的主要意义在于分析系统错误发生的原因,以作出解决的方法。

它可分为三种类型:

1、完全内存转储。这个文件比较大,和物理内存相当,包含了程序崩溃前系统及用户模式下的所有信息。

2、核心内存转储。这个文件大小约物理内存的三分之一,主要包含崩溃前系统内核的运行情况。一般为了分析内核错误,就选用这种文件。

3、小内存转储(128K)。这个文件小,刚好一个页面文件大小。它包含了相对比较少的信息,主要可用于微软的在线分析。

以上三种形式的文件可以在我的电脑——〉鼠标右键——〉属性——〉高级——〉故障及恢复中设置。可以根据自己的需要,设定dump文件的存储路径。

如下图:



<!--[endif]-->

?

1 设置dump文件

一般性的,只是为了定位引发蓝屏问题的进程和函数,只需要小内存转储即可。可想而知,核心内存转储提供了更多的信息,在小内存转储提供的信息不能满足您的要求的时候,可以试着去分析核心内存转储,但完全内容转储几乎是用不上的,为什么,文件太大了。