再下载WinDbg程序的最新版本,同样也安装到真实系统中。
接下来我们要在虚拟机中装系统了,我用的是WinXP SP2。安装完成后修改boot.ini文件。在里面[operating systems]节中加入一行,
" multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Microsoft Windows XP Professional - debug" /fastdetect /debug /debugport=com1 /baudrate=115200 "
随后关闭系统。配制虚拟机的硬件,点击 "Edit virtual machine settings",添加一个Serial Port,选择"Output to named pipe",然后下一步,第一框里保持默认的 "//./pipe/com_1"
第二框里选"This end is the server."
第三框里选"The other end is an application."
选中 "Connect at power on"
然后点击 "Advanced>>" 然后在新窗口中选中 "Yield CPU on poll"。保存退出。
好了,以上就是虚拟机系统要做的全部事情。
在真实系统中,我们要在设备管理器中。找到Com1口,然后再属性页中修改他的速率为115200。
然后为使用方便,创建一个WinDbg的快捷方式。快捷方式的命令行为
"C:/Program Files/Debugging Tools for Windows/windbg.exe" -b -k com:port=//./pipe/com_1,baud=115200,pipe
使用时,首先运行虚拟机系统,然后运行刚才我们创建的WinDbg快捷方式。运行完成后再在虚拟系统中选择带有调试标志的系统即可。此时回到真实系统,稍等一会就可以看到WinDbg输出信息告诉我们两个系统已经连接上了。
我笔记本没有串口com1,原以为不能调试,结果发现,主机和虚拟机中设置com根本就是多余的,虚拟机只用添加com1端口号,主机就直接可以连上使用。
在调试前,要在windbg的File菜单中设置Symbol Search Path,如:
D:/YourCodesSymbols; C:/WINDOWS/Symbols;SRV*D:/LocalSymbols*http://msdl.microsoft.com/download/symbols
还有Source File Path、Image File Path都要设
调试内核驱动的时候,这样设置:
Symbol File Path:
E:/code/Kits/mydrv/objchk_wnet_x86/i386
Source File Path:
E:/code/Kits/mydrv
Image File Path:
E:/code/Kits/mydrv/objchk_wnet_x86/i386
然后,以调试模式启动虚拟机
在虚拟机等待连接的时候,在WinDbg中选择Kernel Debug,并确定
当WinDbg显示与虚拟机连接上之后,选择Break
打开源程序文件,插入断点,选择Go
当驱动程序加载并执行到断点处就会停下来