最近有看到很多玩家在论坛上求助蓝屏的问题,而且大多数都是在遇到蓝屏的时候感到举手无措,

所以,授之鱼不如授之渔,今天咱们不如好好聊聊蓝屏。

可能没有什么事可以比游戏打了一半突然电脑蓝屏更让人抓狂的了吧?还真有,办正事的时候蓝屏。无论如何,当电脑发生蓝屏的时候总是让人十分尴尬的。然而随着时代的推进,如今各种各样的设备都通过计算机实现,因此安装了Windows操作系统的设备几乎是无处不在的——虽然很多时候你可能并没意识到,蓝屏发生的场景也越来越多,越来越奇葩。

有一句话不知道你有没有听到过:有电脑的地方就有Windows,有Windows的地方就有蓝屏。

比如说,去银行取个钱:

在家看个电视:

开个车出门:

在候机厅等飞机:

没事逛个街:

树立个招牌:

最尴尬的是Windows 98在其发布会上,当着盖茨和CNN转播的面现场蓝屏:

随着Windows OS版本的更新和改进,蓝屏发生的状况确实相比之前是越来越少了,但是这并不代表着蓝屏不再发生。可以这么说,蓝屏已经成为Windows的经典了——虽然我们并不期望总是看到这种经典。

为何发生

为了梳理清楚这个问题,我们不妨进行反推考虑。

首先,系统蓝屏的发生从最根本上来说,意味这整个系统在运行的过程中遇到了无法纠正和忽略的错误,从而导致系统无法继续工作。为了尽可能保护硬件和系统的完整性,Windows强制中断运行,显示蓝屏画面。当然了,这是一种弃卒保帅的策略,为了做到尽可能大的保护,RAM中的数据将会被全部抛弃,简单点说,没存盘的东西就都没有了。

那么,由那些因素会引起电脑产生如此严重的问题呢?当然了,一台电脑无非就三个层面:硬件、系统和软件。

硬件

我们首先很自然而言地想到硬件本身的问题引起的蓝屏。如果硬件本身质量上存在问题,或者随着日常使用折旧后产生损坏,那么当系统需要调用该硬件的时候,自然就会产生错误,从而引起蓝屏。

第二种情况是超频。很多玩家喜欢对自己的硬件进行一些调试,希望其可以表现出更高的效能。然而由于自己更改了硬件的运行环境和条件,因此硬件是否可以稳定运行对于玩家来说更多只是“凭感觉”。这里必须强调的是,所谓的超频测试软件大多原理是尽可能地调用硬件,通过硬件系统在尽可能高的压力下进行运行。然而这并不能代表硬件的超频是足够稳定的。烤机没有问题但是看个网页的蓝屏案例也比比皆是,因此千万不要认为什么“运行XXX软件多少多少小时不出错误”就是十分稳定了。发生蓝屏时,如果你超了频,那么第一反应一定是恢复所有硬件到出厂设置再尝试是否依旧蓝屏。

第三种情况,相较于如今如同拼积木的DIY而言已经十分少见了,就是兼容性问题。对于市场上常见的产品而言,只要不是年代过于久远的硬件,厂商都会尽可能做到兼容,这点如今已经几乎不需要担心了。但是特别需要指出的是,如果你只是对于Vendor的产品部分更换硬件的话(比如笔记本加个内存、NAS换一块硬盘等),最好还是事先检查一下厂商提供的兼容性列表。因为成品的研发实际上是为了保障厂商销售的方案尽可能的稳定和高效,在一些设置上可能会对兼容性做出一定的牺牲。当你想从市场上淘换一些相对便宜的OEM产品时也是同样的道理。

系统

关于系统,首先需要把一个老生常谈的问题再一次重复:不要使用乱七八糟的镜像来安装系统。如果你需要一个镜像来安装你的系统,MSDN一定是你最优且唯一的选择(这里http://msdn.itellyou.cn/)。由于MSDN提供的是ed2k地址,最安全的做法是通过一些支持ed2k的软件下载镜像后对文件进行SHA1校验。至于具体的安装,Microsoft也给出了一个官方工具:Windows USB/DVD Download Tool(参考http://bbs.pceva.com.cn/thread-87359-1-1.html)。官方的镜像和官方提供的工具一定是你最优的选择,不要随便使用网上找来的ghost镜像或者PE之类的工具安装系统。为什么?因为你不知道这里面到底集成了一些什么东西,你也不知道在安装的过程中到底会给你装上多少东西,你更不知道这些东西是否适合你的机器,你甚至不知道这些东西是不是会给你带来什么麻烦。相比于这些潜在的隐患和麻烦,老老实实用最标准的方式可以为你以后省下大量的时间和精力。

在你成功安装了系统之后,那么自然就需要安装驱动了。驱动从哪里来?自然是从提供产品的地方下载。通常而言,芯片制造商和硬件制造商是你最佳的选择。当然,你首先得搞清楚自己拥有哪些硬件,然后再到厂商的产品列表中寻找相关驱动。可能你会觉得这很自然也很简单,然而这一步实际上是十分重要的。我个人的观点是,千万不要使用“驱动XX”之类的软件搜索硬件驱动。软件的原理大多是读取主板提供的硬件信息,再把相关信息对数据库进行查找,提供相应的驱动程序下载。这样做有什么不对么?首先,软件本身并不知道它看到的硬件到底是什么,只是通过一些硬件本身以及主板提供的代码来进行辨别,然而这种识别实际上是存在较大的失误率的。是否真的总是能找到合适的芯片先不谈,即便是一模一样的芯片,不同的厂商将之用在不同的产品上采用不同的方案可能导致不同的设置,而这种设置自然也会体现在驱动的修改上。可是驱动软件不知道啊,它只能把相关的驱动列一排给你,然后你自己看着办吧。另外一点是,驱动软件为了得到足够底层的硬件代码信息,通常需要在系统中植入一些进程和服务来对电脑进行监控,实际上这就是非常大的隐患了。虽然还没有实际发生什么非常严重的事件,然而这种风险实际上完全是没必要的。

软件

在Windows XP早期的时候,相信各位一定都被各种各样的奇怪问题给折腾过,如今的很多操作习惯也来自于XP时期的使用习惯。

在那个病毒横行的时期里,安装杀毒软件(甚至防火墙软件)几乎是装完系统之后的第一选择,因为各种各样奇怪的病毒、流氓软件总是在你不留意间就进入了计算机,闹得天翻地覆之后导致系统蓝屏。然而随着Windows系统本身不断的更新和修补,现如今系统对防毒已经有了很大程度上的改进,计算机病毒这个问题已经远没有当初那么严重了。然而这并不代表着我们如今就不需要预防病毒,杀毒软件仍然能够起到很好的作用。另外,自从Windows 8开始,微软已经在系统中集成了MSE杀毒软件,对于绝大多数的用户来说实际上已经绰绰有余了。必须特别强调的是,没有哪个杀毒软件是金钟罩,不存在100%预防病毒的软件,杀毒软件只是一个辅助工具,防毒更多靠习惯,不该访问的网站不要访问,点击链接前多想想。

拒绝“XX优化”、“XX大师”等软件。由于在多年以前,电脑的硬件性能并不是那么充裕,以至于甚至难以保证系统本身的流畅运行,因此就出现了各种各样的优化软件,通过清理垃圾、更改配置、关闭服务等方式尽可能减少硬件上的压力。然而给电脑查毛病犹如寻医问诊,个体和个体之间并没有那么多的共同性。每个电脑都有着不同的硬件搭配、不同的系统配置和不同的使用环境,固然他人发生过的问题可以为自己提供相当实在的经验,然而不存在一种通用的方式适合所有的电脑。然而软件并不知道那么些东西,只是根据程序预设的一些条件进行判断和修改,那么到底有没有必要去这样“优化”呢?没有人知道答案。

如何排查

首先必须要明确一点,排查和修复蓝屏更多意义上是经验的体现,虽然排查的步骤有章可循,然而问题的原因和解决的方法都不会是固定的,更不要去相信什么“一键修复”之类的鬼东西。

前后情况对比

一般来说,蓝屏的发生并不是毫无理由的,即便从时间上来看可能存在一定的随机性,然而自己对比总是可以找到一些共通点的。通常某个特殊的操作或者某个特殊的状态会直接把系统本身的不稳定扩大到蓝屏的程度,因此特别关注发生蓝屏前后时段的操作总是会得到一些有用的信息。比如说,我每次打开某个软件的时候就会蓝屏,那么这通常就意味着要么这个软件本身有问题会引起系统的bug,要么这个软件对某些硬件或者文件的调用导致了蓝屏。再比如说,每次开特效打游戏的时候就会蓝屏,那么大致上就可以判断应该是显卡或者驱动这里引起的蓝屏,是不是驱动版本有问题?软硬件安装不到位?显卡元件损坏或者过热?虽然这不能直接告诉我们答案,但是也给出了非常好的方向。

蓝屏显示

在蓝屏显示中,系统会给出一个代码用以提供方向:

比如上图,这里就有一个STOP: 0X00000050,也就是我们通常所说的蓝屏代码为50,后面括号里面的数值是parameter,同时也显示系统在运行SPCMDCON.SYS的时候发生蓝屏;

在一些配置下,Windows会在重启后显示一个对话框,把刚才发生的蓝屏代码显示出来(比如这里的116)。

那么有了这些东西我们要怎么办呢?首先,我们可以到微软提供的列表中寻找蓝屏代码实际对应的含义(这里)。

比如之前提到的50,我们在网站上看到

This indicates that invalid system memory has been referenced.

不言自明,内存以及内存相关(CPU的imc设置、内存插槽等)自然成为了第一排查方向;

再比如之前提到的116,我们在网站上看到

This indicates that an attempt to reset the display driver and recover from a timeout failed.

很明显,显卡、显卡驱动、PCI-e就成为了第一排查方向。

另一个问题,之前提到的SPCMDCON.SYS,这个又应该怎么使用呢?首先,你可能不了解SPCMDCON.SYS到底是个什么文件(其实我也不知道),通过网上一些简单的搜索,大致可以了解到这是一个系统自带的文件,通常可以通过用系统镜像scan来修复。然而这并没有告诉我们问题到底出来哪里不是?蓝屏排查本身就是这样,没有一种方法一定会得到答案的。不过有时候也能给我们一些意外惊喜哦:

DUMP文件

有的人会提出一个疑问,蓝屏上的字闪得太快我没看到,或者字太多我记不住怎么办?——查看DUMP文件。

查看DUMP文件实际上是一个非常直接和有效的方法了,然而有个问题——Debug对于绝大多数用户而言很难。然而即便你无法看懂DUMP文件,在向他人求助的时候一并提供该文件将会非常有帮助。

在默认情况下,系统将会把DUMP文件保存在X:\Windows\Minidump,X为Windows安装卷标。但是为了确保系统确实记录了DUMP文件,我们还是得检查一下设置:

我的电脑—属性—安全—启动和恢复—设置

在这里“系统失败”中确保写入系统日志。这样你就可以在X:\Windows\Minidump中看到.dmp文件了。然而为了打开.dmp文件,你还需要一个软件,比如说WinDbg。实际上,WinDbg是一个Debug工具,对于只是打开和查看DUMP文件而言多少有点大材小用。

打开WinDbg(可能需要管理员权限),Open—Open Crash Dump,然后选择DUMP文件。
特别提一下,正确关闭DUMP文件的方法是菜单上的Debug—Stop Debugging。

在文件头都是一些基本的系统信息,看不明白也没所谓;

往下看可以看到Bugcheck Analysis,这里记录了蓝屏信息:7E蓝屏,网站上看到:

This bug check indicates that a system thread generated an exception that the error handler did not catch.

有一个系统进程产生了问题导致了蓝屏。
那么这又是什么进程呢?继续往下看……


哼……可能由于dxgmms1.sys,也就是说和DX有关系了,比如说系统中的DX(可以使用dxdiag)、显卡驱动等的问题。

最后的最后

一如之前所说,蓝屏的发生可能非常恼人,蓝屏的排查也比较需要耐心。实际上,电脑的维护真的不难,很多时候蓝屏的发生更多是由于曾经的一时偷懒,谈不上一劳永逸,但是只要你肯稍微花一些心思在自己的电脑上,这样的问题是可以最大量避免的。

 

 

Last modification:July 11th, 2018 at 09:45 pm
If you think my article is useful to you, please feel free to appreciate