虽然基于nt架构的windows 2000/xp系统稳定性已经大大增强,甚至windows xp号称“从不死机”,但我们仍然会不时看到如图1所示的蓝色警报信息,这就是通常所说的“蓝屏”,究竟是怎么回事呢?
一、windows 2000/xp爆发蓝色警报的原因
windows 2000/xp采用了分层结构,它的两个层又称模式,分别为用户模式(user mode)和内核模式(kernel mode),应用程序是无法直接访问硬件设备的,只有借助驱动程序才能直接访问。
不过,即使nt架构再稳定,由于会由于某些原因,例如硬件冲突、硬件产生问题、注册表错误、虚拟内存不足、动态链接库文件丢失、资源耗尽等,此时可能会导致驱动程序或应用程序出现错误,严重时甚至会波及内核层。这种情况下,windows会中止系统运行,并启动名为kebugcheck的功能,通过检查所有中断的处理进程,并同预设的停止代码和参数比较后,屏幕将变为蓝色,并显示相应的错误信息和故障提示,由于出现这种现象时实际上就意味着死机,因此常称为“blue screen of death”(bsod),又称“stop信息”或“停止信息”。
二、认识蓝色警报中隐藏的信息
windows 2000/xp的bsod窗口与windows nt4以前的bosd窗口有着很大的区别,最大的区别是nt的bsod窗口仅包括一个通用的停止消息代码,但windows 2000/xp的bsod包含了停止消息和硬件消息两种类型,前者是发现一个无法恢复的软件错误时产生的错误信息,后者是发现一个严重的硬件错误时产生的错误信息。
虽然图1窗口中的信息看起来很复杂,但一般均由以下三部分组成:
1.错误信息
在“*** stop:”至“****** wdmaud.sys”之间的这段内容是所谓的错误信息,由出错代码、自定义参数、错误符号等三部分组成,各部分的含义如下:
出错代码:stop后面的16进制数字;
自定义参数:出错代码字符的组成,由程序人员定义,一般用户很难理解;
错误符号:kmode_exception_not_handled
在错误符号后面,这里还显示了一个内存位置和文件名,可以了解到发生错误时的内存位置和源文件。对我们来说,其实最有用的还是前面的出错代码信息,在搜索微软知识库时将会用到。
2.推荐操作
这里显示了系统推荐用户采取的操作措施和步骤,例如在安全模式下卸载程序、回滚驱动程序、更新bios、安装补丁等,不过大部分情况下都需要重新启动系统后才能考虑进一步的操作。
3.调试端口信息
这里会显示应该如何设置内核调试器的信息,包括内存转储映像是否已写入磁盘、使用什么端口来完成这次调试。
其实,根据笔者的经验,蓝色警报中除了出错代码比较有用外,对普通用户来说,其余的大部分信息并无多少实际意义,仅供参考而已。
为调试系统的需要,windows在系统出现bsop错误后,kebugcheck会自动生成一个名为memory.dmp的侦错文件,该文件位于c:\\\\windows\\\\minidump\\\\文件夹下,默认设置下,该文件的大小与系统物理内存容量一致,我们可以将该文件压缩后发送给微软的技术支持部门,以获取相应的解决方案,但该文件的容量是如此巨大,如何发送是一个大问题,因此很少有用户真正这样做。
提示:打开“系统属性→高级→启动和故障恢复”窗口,如图2所示,在这里可以看到“写入调试信息”的生成方式:小内存转储、核心内存转储、完全内存转储、无,基于上面的分析的原因,建议在这里选择“无”。
三、处理蓝色警报三部曲
虽然windows 2000/xp的蓝色警报窗口显示的信息可能各有不同,或者是硬件原因,或者是驱动程序与系统兼容性方面的问题,或者索性是应用程序的某些bug。首先当然是排除病毒的原因,然后我们可以按照如下步骤进行处理:
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器