驱动开发中最头痛的问题之一莫过于随机的系统蓝屏,一切灰飞烟灭。不过还好Windows有dump文件可以帮助定位相关问题。如果蓝屏时系统明确提示是你所开发的驱动的SYS文件引起的蓝屏,那就好确认了。
在这里介绍使用WinDbg定位到蓝屏的驱动的源代码的方法。不过要满足两个条件:一.必须是所开发的驱动sys文件引起的蓝屏。二.要有源代码。
定位方法:
一.使用源代码编译Debug版本的驱动文件。必须是Debug版本,否则无法看到源代码。
二.安装驱动,运行,等待蓝屏。
三.重启之后,使用管理员权限打开WinDbg,设置Symbol File Path:如
SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols;D:\LWF_SOURCE\Solution\x64\Win7Debug
这里有两个路径,一个是SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols,系统会自动下载相应的Symbol。另一个是D:\LWF_SOURCE\Solution\x64\Win7Debug,这个比较重要包含驱动的pdb文件,如果没有它,就无法定位到源代码。
再设置Source File Path,如
D:\LWF_SOURCE\Solution,这个是驱动源代码的根目录。
四.打开pdb文件,运行!analyze -v命令。之后就能看到在哪一行代码出了问题。蓝屏也就好解决多了。