WinDbg 推荐微软商店安装,UI好看
WinDbg本地调试无法通过下断点来跟踪内核的执行,就需要采取特殊的方法,可以通过USB、1394火线等把两台机器连接起来,一台机器运行被调试的内核,另一台机器运行WinDbg,这样就可以调试内核了。不过两台机器的内核调试成本太高,实际上都是通过WinDbg结合虚拟机的方式来调试内核的。虚拟机平台自行选择。
安装好WinDbg后
在VMware上创建一个COM串口(COM1或COM2)。如下图,创建的串口是串口2,后文中Windows XP的 boot.ini或者 Windows Vista 以后版本命令行里的设置均填写 “com2”。创建的串口ID为 “com2”的原因是存在虚拟机。为了方便,也可以先将虚拟打印机删除,这样创建的串口ID就是“com1”了。
- 设置虚拟机内部系统的调试环境。虚拟机内存操作系统根据不同的版本,设置方法略有差异。
在Windows XP中是通过BOOT.ini进行配置的。在系统C:\目录下才可以找到boot.ini(注意:该文件为隐藏只读文件,须在文件夹选项中取消对系统文件隐藏才能看见)。在boot.ini文件的最后添加如下行,/debugport=取决于创建的串口ID(com1或com2)。
1 | multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional-debug" /debug /debugport=com2 /baudrate=115200 /fastdetect |
在Windows Vista/7及以后的操作系统中,以管理员身份启动CMD,运行如下命令 。
1 | bcdedit /dbgsettings serial baudrate:115200 debugport:2 |
在虚拟机外建立WinDbg快捷方式,命令如下。
1
windbg.exe -k com:port=\\.\pipe\com_1,baud=11520,pipe
启动虚拟机内的操作系统,并选择调试启动菜单。
通过虚拟机外的WinDbg快捷方式启动WinDbg。
经过以上步骤,稍等片刻,WinDbg和虚拟机就会连接起来。如果长时间没连接上,可以点击WinDbg菜单项 Debug –> Kernel Connection –> Resynchronize,重新进行连接。
单击WinDbg菜单项Debug –> Break(或按 Crtl + Break快捷键)让系统中断,就可以向WinDbg下调试命令了。