下沙论坛

标题: QQ语音聊天蓝屏两种排错过程(涉及搜索引擎的使用/windbg对蓝屏dump文件的粗略分析) [打印本页]

作者: 煎饼    时间: 2008-11-26 10:43
标题: QQ语音聊天蓝屏两种排错过程(涉及搜索引擎的使用/windbg对蓝屏dump文件的粗略分析)
前言:
宿舍的电脑刚好出现这个问题,然后那位舍友和自己分别用了两种方法解决了这个问题,因此写出来分享一下。
法一,是专门针对新手,给他们一种自己搜索解决问题的思路——特别是对搜索引擎使用的能力,因为很多时候,搜索引擎能够解决你很多问题。
而法二,仅为抛砖引玉,为蓝屏的解决方法提供另一种思路。



故障描述:
宿舍电脑,Windows XP SP2,硬件列表中声卡驱动名称为Realtek High Definition Audio
初始杀毒软件NOD32。
使用QQ语音聊天,一旦对方点接受的话,就立即蓝屏,但以前并无该问题。其蓝屏信息:
IRQL_NOT_LESS_OR_EQUAL
STOP:0X0000000A(0X00000001,0X0000001C,0X00000001,0X804FBEE4)
换用卡巴,甚至“裸奔”,故障依旧。

法一(舍友,部分有自己的指导):搜索引擎的使用——关键是搜索什么样的词,和在哪里搜索。

Step 1:
百度搜索“IRQL NOT LESS OR EQUAL”(不含双引号),首先有如下微软的文章。
《错误信息:STOP 0x000000D1 DRIVER_IRQL_NOT_LESS_OR_EQUAL》:
http://support.microsoft.com/kb/293077/zh-cn
文中提到: " K3 T$ U2 x) w
5 T" b# C0 c, A) T* Z* y+ M3 f' M
引用:
% ^" ~8 I0 ]# i3 [) @
当启用 Driver Verifier 功能并且驱动程序使用了不正确的地址时,会发生此问题。注意错误信息中可能列出了导致此问题的驱动程序。
但是里面列出的适用操作系统并没有Windows XP,而且该链接描述“DRIVER_IRQL_NOT_LESS_OR_EQUAL”与“IRQL_NOT_LESS_OR_EQUAL”有些不同,所以该解答只能作备用使用。

Step 2:
然后在http://support.microsoft.com,在右边的“查找支持”中搜索“0x0000000A”。



并且在搜索结果页面的左边“查找结果 按产品类别显示:”点选“Windows XP”





发现了如下重要文章:《消除 Windows XP 中出现的“Stop 0x0000000A”错误》
http://support.microsoft.com/kb/314063/
根据该文档显示, ; J6 |: Q2 ?' Z% H% @
5 Y& M/ ?* R4 U4 e$ ]- y
引用:
! S- m$ [ x2 h0 c3 @( p# C" T8 `
如果在安装 Windows XP 之后收到 Stop 0x0A 错误,请使用以下故障排除方法检查其他组件:检查第三方软件或驱动程序。
因此可以认定,问题的产生很可能是驱动程序的问题。

Step 3:
回到Baidu,搜索“QQ语音蓝屏”,找到如下文章:
我关于技嘉915P主板QQ视频、语音聊天蓝屏问题的解决
http://hi.baidu.com/jkyx/blog/item/5cfdb331d40a7da85fdf0e27.html
根椐该文档显示,作者在实验中得出,是c-media 9880声卡驱动的问题。后来无意间“使用Windows Update的‘自定义’,安装C Media Electronics Incorporation - Sound - C-Media High Definition Audio Device的升级更新”即解决了问题。

联系Step 2的文章,那么是不是可以判定该电脑的Realtek HD声卡驱动也有问题呢?是不是安装新驱动即可呢?

Step 4:
www.mydrivers.com,在页面最上面选“声卡驱动”,并输入“Realtek High Definition Audio”搜索。
结果搜索到适合于XP的最新Realtek驱动。
http://drivers.mydrivers.com/drivers/dir186/d74427.shtml

Step 5:
下载安装,重新启动,再试。故障解决。



法二(自己,参考盆盆的文章):使用windbg对dump文件粗略分析——“照猫画葫芦”

前一段时间看到了盆盆的文章,《Lenovo Thinkpad T61奇怪的蓝屏故障和解决办法[BugCheckID:0x00008086]》
http://blogs.itecn.net/blogs/ahpeng/archive/2007/09/02/lenovo-thinkpad-t61-bugcheckid-0x00008086.aspx
在里面提到了windbg对Crash Dump的分析。所以这次就“照猫画葫芦”,找出问题根源,并且顺利解决。在这里感谢盆盆的文章!

Debugging Tools for Windows - Overview:
http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

Step 1:
首先到如下地址下载并安装Windows Symbol Packages:
http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx
如果你的操作系统是32位的话,则到如下地址下载并安装Debugging Tools for Windows 32-bit Version:
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
如果你的操作系统是64位的话,则到如下地址下载并安装Debugging Tools for Windows 64-bit Version:
http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx

Step 2:
从朋友处拿crash dump。一般是Mini Dump,在%SystemRoot%\Minidump文件夹下,如果是“核心内存转储”or“完全内存转储”则是文件%SystemRoot%\MEMORY.DMP,不过文件就大得多。

Step 3:
然后点击“开始/所有程序/Debugging Tools for Windows/Windbg”,在打开的Windbg中,“File/Open Crash Dump”,在弹出的对话框中找到该dump文件,然后打开。 6 h3 L* s) g! I8 ?2 r4 Q) {
9 \( `/ A* u _- g
引用:
* u5 V+ Y" X8 g

***** Kernel symbols are WRONG. Please fix symbols to do analysis.
Unable to load image RtkHDAud.sys, Win32 error 2
*** WARNING: Unable to verify timestamp for RtkHDAud.sys
*** ERROR: Module load completed but symbols could not be loaded for RtkHDAud.sys
*** WARNING: Unable to verify timestamp for portcls.sys
*** ERROR: Module load completed but symbols could not be loaded for portcls.sys
*** WARNING: Unable to verify timestamp for ks.sys
*** ERROR: Module load completed but symbols could not be loaded for ks.sys
*** WARNING: Unable to verify timestamp for sysaudio.sys
*** ERROR: Module load completed but symbols could not be loaded for sysaudio.sys
*** WARNING: Unable to verify timestamp for wdmaud.sys
*** ERROR: Module load completed but symbols could not be loaded for wdmaud.sys
Probably caused by : RtkHDAud.sys ( RtkHDAud+41813d )
Probably caused by RtkHDAud.sys?可能声卡驱动文件RtkHDAud.sys引起的问题?

Step 4:
然后在窗口的最下面输入“lmvm RtkHDAud”命令并回车查看RtkHDAud.sys的时间戳。 6 B7 `( _1 ? e3 N6 F R. n
. R: d8 ^ L' M4 ]% u" X
引用:
: B7 B# |* D' L' I) h6 A$ c
1: kd> lmvm RtkHDAud
start    end        module name
f3f60000 f43af000   RtkHDAud T (no symbols)           
    Loaded symbol image file: RtkHDAud.sys
    Image path: RtkHDAud.sys
    Image name: RtkHDAud.sys
    Timestamp:        Tue Aug 01 19:06:58 2006 (44CF35D2)
    CheckSum:         0042EB37
    ImageSize:        0044F000
    Translations:     0000.04b0 0000.04e0 0409.04b0 0409.04e0
2006-8-1,可能是比较旧的驱动了。是不是使用新驱动即能解决这个问题呢?


Step 5:
然后依据法一的Step 4和Step 5下载新驱动,解决了问题。


备注0:为什么找不到Dump文件?
因为在“启动和故障恢复”中把“写入调试信息”设为“(无)”了。请修改为“小内存转储(64KB)”即可。

备注1:在Windbg对Dump的文件中,如果输入!analyze -v即可在STACK_TEXT查看Debug的堆栈信息。可怜自己才疏学浅,都看不明白......

备注2:在Windbg中如果想打开新的dump文件,应该是使用菜单栏的“Debug/Detach Debuggee”。

备注3:
如果对IRQL_NOT_LESS_OR_EQUAL (0xA)的错误想深究调试下去的话可以看这篇文章:《如何在收到 Stop 错误 IRQL_NOT_LESS_OR_EQUAL (0xA) 后调试系统》
http://support.microsoft.com/kb/818501/zh-cn

如果对程序调试有兴趣的话可以下载下面的PDF,《Windows用户态程序高效排错》:
http://www.cnblogs.com/lixiong/archive/2006/08/16/475520.html






欢迎光临 下沙论坛 (http://bbs.xiasha.cn/) Powered by Discuz! X3.3