如何精准定位你的蓝屏问题

最近本程序狗的生产工具一阵抽风啊,简直是把我搞的恨不得咬舌头自尽,大概的问题就是蓝屏,不停的蓝屏,所以就有了本次博客的主题,如何精准定位你的Windows蓝屏问题

所谓Windows蓝屏也就是Windows发生的严重的无法通过自身恢复的错误,大多数都是硬件或者系统内核错误,现在的Windows系统的蓝屏界面已经比以前好看很多了,但是还是基本得不到什么有用的信息,基本我们想要定位蓝屏问题只能通过蓝屏代码,或者是蓝屏问题描述来解决问题,所以这里我要从蓝屏文件入手,分析究竟那个进程导致了Windows蓝屏

首先我们需要准备一些工具blueScreenView或者WinDbg这两个还是比较推荐后者的,前者的蓝屏问题分析其实是比较简单的,显示和很直观,但是大部分的分析工作需要使用者自己做,我们大概来介绍一下,我们首先导入蓝屏文件

然后从蓝屏文件中我们很容易看出这次蓝屏的代码以及引发蓝屏的程序以及程序内地址,但是分析也就仅仅到这,感兴趣的呢,可以使用前面的连接进行一下蓝屏分析,文件我会附在文章的最后

既然是微软的系统,那么最好用的还是微软的工具,也就是说我们还是要重点讲解一下WinDbg的使用,上面的连接我只提供了64位版本,需要32位版本的可以自行百度。首先我们打开WinDbg,按下Ctrl+s,在打开的对话框中输入

加载完符号集以后我们需要打开蓝屏文件,使用open crash dump打开

首先我们应该在意的事情是System Uptime,这里记录了系统在运行多久后发生了这个问题,然后我们输入!analyze -v,让软件进行深入分析

在详细的分析中,首先得出了蓝屏的错误代码CRITICAL_PROCESS_DIED (ef)。然后我们需要在意的是PROCESS_NAME,这里是导致蓝屏的进程信息,在我这里是wininit.exe(真特喵的可怕),但这个并不是导致蓝屏的直接原因,这个可以理解为诱因,是wininit.exe的某个行为导致的蓝屏,那么这个行为是什么呢,让我们继续看

SYMBOL_NAME这一项是Windows蓝屏代码,我们主要看的是IMAGE_NAME,这里是直接导致Windows蓝屏的程序或者镜像(包含exe dll bat sys)就是这个程序在执行过程中出现的问题直接导致蓝屏,究竟是什么问题导致的呢,这里我们需要网上找STACK_TEXT,查看当时内存栈的信息,或者你也可以去查一下这个程序的负责功能

我们也可以用!process来看诱因程序

这里确实很明确的写着出错程序和错误信息

当然我们也可以lmvm nt来显示直接导致崩溃的程序的崩溃信息

可以看出直接导致崩溃的是ntoskrnl.exe和我们上面使用blueScreenView得出的结果一致,下面则列出了一些关于程序的信息,我们可以发现这是一个系统进程,并且是内核进程,他的崩溃导致wininit.exe出现前面的内存读错误,进而导致wininit.exe崩溃,导致直接蓝屏,给出CRITICAL_PROCESS_DIED,这个是属于一个比较难解决的蓝屏因为诱因很多,目前依据我得排查初步锁定在驱动上,其他的时候我们会很容的发现

比如这里的分析就会简单很多,一眼就可以发现引起蓝屏的问题程序

Windows系统太过庞大,很多时候一些小的改动都会带来意想不到的后果。如果真的出现了蓝屏不妨使用这个分析一下,然后再进一步处理,当然你也可以把你的蓝屏文件共享到微软社区,会有工程师为你解答

差点忘了说,蓝屏文件存储的地方根据系统不同略有差别

具体的我们可以在上图的位置查看。%SystemRoot%是X:/Windows

最后的最后附上我的蓝屏文件供大家玩耍(VS在没有安装WDK之前是打不开的)

About the author

NOBUG.IN

Add comment

By NOBUG.IN

Your sidebar area is currently empty. Hurry up and add some widgets.