最近刚刚学习驱动,对驱动调试这部分很不熟悉,因此希望通过搭建Debug平台来熟悉Windows下的Driver调试。
从网上找了不少资料,帮助很大,下面简单介绍下基于Virtual Box / VMware Workstation建立单机调试环境。
1,安装虚拟机,可以是Virtual Box,也可以是VMware WorkStation,这两个都有安装过。
Virtual Box的优点是安装文件比较小(<100M),免费的。缺点是对很多硬件支持不够友好,笔者尝试过USB 2.0设备,发现经常无法识别。
VMWare WorkStation的优点是对硬件的支持比较好,USB 2.0多个设备均可正常工作,缺点是需要收费,安装文件比较大(>450M)。
2,安装操作系统,笔者只尝试了Win XP32 SP3,Virtual比较奇怪,如果按照操作系统前没有在硬件里添加串口,按照之后再添加居然不能找到。。。
不过网上有说不影响调试,我没有测试过。VMware Workstation则要友好许多。
3,设置调试端口,这里可以采用COM,也可以采用Virtuak KD这款软件,据说Virtual KD利用了Virtual Box/VMware Workstation的后门,可以直接与主机交互数据。
串口的设置如下图:
主机上:(以\\.\pipe\com_2为例,com_2对应了com口,可以不需要跟机器上的真正com口一致,只需要跟WinDbg中所带参数一直即可)
虚拟机上:
a) 设置串口数据速率,如下图:
b) 设置调试机器启动选项,在Windows\下找到boot.ini(需要通过 工具->文件夹选项->查看 设置"显示所有文件和文件夹",并关闭"隐藏受保护的操作系统文件")
打开后,添加如下:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com /baudrate=115200
如图:
这些都设置好了之后就可以调试了,这里采用的是WinDDK自带的WinDbg,WinDbg还有些参数需要设置,启动时需要设置参数:
windbg -b -k com:port=\\.\pipe\com_2,baud=115200,pipe
可以在桌面或者其他位置建立快捷方式,修改其中的 属性->目标
以"C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe"为例,
修改为 "C:\Program Files\Debugging Tools for Windows (x86)\windbg.exe" -b -k com:port=\\.\pipe\com_2,baud=115200,pipe
接下来就是启动虚拟机,这时候经常会发现虚拟机卡死,启动不了,或者停在某个位置,笔者观察,这是虚拟机在等待主机连接,这时候只需要打开上述方式建立的快捷方式或者输入命令参数即可。此处的com:port=\\.\pipe\com_2需要跟Virtual box/VMware Workstation中所设置的端口一致。
Windbg启动后出现 Waiting to reconnect... 字样,稍等出现如下字样,则说明已经连接上:
这时候虚拟机会停在某个位置,这时候是调试机器在等待调试命令,正如上面提示的
* THIS IS NOT A BUG OR A SYSTEM CRASH *
* *
* If you did not intend to break into the debugger, press the "g" key, then *
* press the "Enter" key now. This message might immediately reappear. If it *
* does, press "g" and "Enter" again. *
此时如果继续运行至需要输入 "g" 即可。
至此,单机调试环境已经OK了,下来就是加载symbols、加载sys进行断点设置以及单步调试了。
参考:
http://hi.baidu.com/_achillis/blog/item/4f2ec159f64bfa86810a18cd.html
http://hi.baidu.com/_achillis/blog/item/4666c1c9ed915e107f3e6fa8.html
http://hi.baidu.com/_achillis/blog/item/734018fb91ddbe9058ee90f2.html
http://blog.csdn.net/BackStrokeFish/article/details/2205404