本文为在学习过程中的笔记,写的不好请见谅.

在调试内核驱动程序时,驱动程序被操作系统加载.而操作系统无法自己调试自己.所以要用一台计算机调试另一台计算机的操作系统,进而调试内核驱动.

使用windbg对虚拟机中的操作系统进行调试之前,要先配置windbg和虚拟机,这里用的windbg为WDK7.1中自带的.


虚拟机配置

安装好虚拟机后,打开虚拟机界面,点击编辑虚拟机设置

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_调试

点击添加

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_虚拟机_02

选择串行端口,点击下一步

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_操作系统_03

选择输出到命名管道,点击下一步

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_调试_04

这里的名称可以修改,但如果不了解不建议修改,直接点击完成

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_如何在虚拟机中调用gpu_05

此时在虚拟机设置中,会多出刚才添加的串行端口,说明添加成功

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_虚拟机_06

打开VM中的操作系统,打开我的电脑,点击工具,文件夹选项

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_内核_07

设置不隐藏受保护的系统文件,并显示所有隐藏文件和文件夹,点击确定

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_虚拟机_08

在C盘根目录中,右键boot文件,属性,去掉只读,点击确定

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_调试_09


如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_虚拟机_10

打开boot文件,复制

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=”Microsoft Windows XP Professional Debug” /noexecute=optin /fastdetect /noexecute=alwaysoff /debug /debugport=com /baudrate=115200

到boot文件中

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_如何在虚拟机中调用gpu_11

这里要注意:/debugport=com这条设置,如果你的WDK是7.1以下版本,请设置为/debugport=com1或者/debugport=com_1,反正不同版本这个/debugport的值设置不一样,如果不能连接,请把每一个都试遍,这里我用的是官方的7.1,经过测试这里要设置为/debugport=com才能正常连接.

保存后关闭文件,重新启动虚拟机中的xp系统,此时在启动界面会多出一个启动项

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_内核_12

到此虚拟接设置完成,下面开始windbg设置

windgb配置

首先将windbg的安装目录配置到环境变量中

这里我的操作系统是win7,计算机-属性-高级系统设置-高级-环境变量-Path-编辑

在最后加入windgb的安装目录,点击确定

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_如何在虚拟机中调用gpu_13

新建一个环境变量

变量名: _NT_SYMBOL_PATH

变量值:SRV*d:\symbol*http://msdl.microsoft.com/download/symbols

其中d:\symbol为符号下载的目录,请自行设置

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_内核_14

新建一个windbg快捷方式,右键点击windbg快捷方式-属性,在目标栏最后添加以下命令行参数

-b -k com:port=//./pipe/com_1,baud=115200,pipe

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_内核_15

windbg配置完成.

打开虚拟机,在启动项时选择,启动调试程序.之后打开刚才新建的windbg快捷方式.

如何在虚拟机中调用gpu 虚拟机怎么用显卡驱动_内核_16

此时,可以看到windbg中已经触发int 3断点.输入g命令,虚拟机中的xp系统则开始运行