今天 驱动一run的时候 虚拟机就蓝屏了,同时输出:system service exception 0x3B的错误码。很有可能就是驱动写的有问题,导致某些地方GG了。

虚拟机 OS: Windows 7,x64
驱动类型:WFP 网络过滤驱动

系统在每一次蓝屏都会生成dump文件,我们可以通过看dump文件查看是驱动的那些地方可能出错。

首先,要用WinDBG处理蓝屏问题,要确保系统有生成内存转储文件。

确认存在内存转储文件

默认配置的Windows 7,生成的可能是核心转储文件(Kernal Memory Dump)或是小内存转储文件(Minidump)。如果是核心转储文件,默认会存为C:\Windows\Memory.dmp,如果是小内存转储文件,相关文件会保存在C:\Windows\MiniDump目录下面。

如果没有相应的内存转储文件,那就GG了,只能拍脑袋想那些地方可能出错了。

安装 Windows Debugging Tool (WinDBG)

x64 安装地址:http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi

配置Windows Debugging Tool (WinDBG)

在用WinDBG分析内存转储文件之前,我们要配置一下WinDBG。

首先,选一个临时目录存放Symbol文件。比如,建立一个目录叫C:\Temp

然后,打开WinDBG,在File菜单-〉选择Symbol File Page。在打开的对话框里输入:

SRVc:\temphttp://msdl.microsoft.com/download/symbols

选择OK确定。WinDBG就配置好了。

用Windows Debugging Tool (WinDBG)分析内存转储文件

在WinDBG里面,在File菜单,选择Open Crash Dump,然后找到前面说的那个核心内存转储文件或者小内存转储文件,选择打开。等待一会儿,如果需要从微软网站下载Symbole文件的话,时间可能会比较长。如果不出现大量Warning,就说明设置是成功的.

一直等到出现Use !analyze -v to get detailed debugging information.字样和0: kd>提示符。

按照提示,输入!analyze -v命令。等待命令执行完成。

Debugging Details:
------------------

Page 8d38f not present in the dump file. Type ".hh dbgerr004" for details

EXCEPTION_CODE: (NTSTATUS) 0xc0000096 - {

FAULTING_IP: 
nt!KeReleaseSpinLock+26
fffff800`03ee1116 45              inc     ebp

CONTEXT:  fffff880027fc9c0 -- (.cxr 0xfffff880027fc9c0)
Unable to read context, NTSTATUS 0xC0000147

DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT

BUGCHECK_STR:  0x3B

CURRENT_IRQL:  0

LAST_CONTROL_TRANSFER:  from 0000000000000000 to 0000000000000000

STACK_TEXT:  
00000000 00000000 00000000 00000000 00000000 0x0


STACK_COMMAND:  .bugcheck ; kb

FOLLOWUP_IP: 
nt!KeReleaseSpinLock+26
fffff800`03ee1116 45              inc     ebp

SYMBOL_NAME:  nt!KeReleaseSpinLock+26

FOLLOWUP_NAME:  MachineOwner

IMAGE_NAME:  Unknown_Image

DEBUG_FLR_IMAGE_TIMESTAMP:  0

BUCKET_ID:  INVALID_KERNEL_CONTEXT

MODULE_NAME: Unknown_Module

Followup: MachineOwner
---------


可以看到:
是在KeReleaseSpinLock附件出现了错误,然后再去这个函数的附件去定位,看是否有逻辑错误。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐