1. 导言
这里主要记录的是以下操作系统配置双机调试的方法。
- WindowsXP X86
- Windows7的X86和X64
- Windows10的X86和X64
使用的工具:
- KmdManager
- DebugView
- WDK8.1驱动开发包
- Windbg 6.x
- VMWare Workstation Pro
所用驱动开发包均为WDK8.1,Windbg用的就是开发包内自带的那个版本。由于Win7与Win10配置双机调试方法不管机器位数都是一样的,所以这里只选择记录Win7的
2. Windows XP X86配置双机调试
1. 首先把XP装到VM虚拟机中
2. 由于双机调试需要虚拟机与主机通信,通信的主要方式是管道,所以要在虚拟机上配置串口,如下图所示:
- 首先点击"编辑虚拟机设置"
- 选择添加
- 选择管道
- 按照上图所示填入后按确定
3. 开启XP虚拟机,进入操作系统
- 右击我的电脑选择属性
- 选择高级
- 如上图所示点击启动和故障恢复中的设置选项
4. 编辑boot.ini配置文件
之前步骤的结果会如上图,接下去点击编辑后会跳出一个boot.ini的文件,将其配置为下图所示:
红框框的内容是改变的部分,对比这些部分修改,注意空格!!
5. 关闭操作系统,打开Windbg调试器
6. 点击Kernel Debug...
- 点击COM页项
- 填充如上图所示内容
- 点击确定
- Windbg会显示下图内容
7. 打开XP操作系统,选择如下图选项
8. 编写一个最简的测试驱动程序,生成X86 Debug配置的驱动程序
9. 打开XP操作系统, 打开过程中会发现Windbg会显示新的内容,如下图所示
10. 将生成的驱动载入后启动(具体方法可查看链接博客的第一部分Windows驱动装载卸载及工具(位于先导部分!))
11. 于是便可在Windbg中调试了,调试方法与在VS上的如出一辙
注意:
- 调试过程卡在断点时XP也无法控制,这很正常,试想即使调试VS上的普通程序遇到断电程序也会卡住,只是这次是整个操作系统
- 如果操作系统卡住,在Windbg上按F9即run就可以恢复运行,然后再停止驱动,卸载驱动等操作后便可继续调试其他程序
2. Windows7及Windows10配置双机调试
这里再提醒一次,这两种版本操作系统配置方法都是一样的所以只演示在Win7 x64。
1. 第1和第2步骤与XP相同,即配置虚拟机。完成后打开Win7操作系统
2.以管理员身份进入cmd控制台, 输入如下指令
上面的指令含义如下:
- bcdedit /set {bootmgr} bootdebug on // 启动调试
- bcdedit /set {bootmgr} debugtype serial // 调试类型是串口
- bcdedit /set {bootmgr} debugport 2 // 调试端口设置
- bcdedit /set {bootmgr} baudrate 115200 // 设置波特率
- bcdedit /set testsigning on // 开启测试模式, 防止强制签名导致驱动无法加载
- bcdedit /enum 枚举信息
最后输入如下指令
可以看到是Serial串口模式, 端口是2,波特率为115200,bootdebug开启。
3. 输入Win+R后,在运行窗口输入msconfig
4. 进入系统配置串口后按如下操作
- 点击引导
- 按高级选项弹出引导高级选项对话框
- 选择调试复选框出现如下图所示
- 选择对应端口后点击确定
5. 完成后出现如下对话框,但不要着急点重新启动!!
6. 打开Windbg, 选择Kernel Debug...
7. 同XP一样的步骤,填写如下图所示
8. 接下来Windbg会显示如下
9. 接着按下第五步的重新启动后Win7会重启(如果卡住了就强制关机在开机,多试几次),并且Windbg会显示如下图所示
10. 可以看到Windbg显示虚拟机是Win7 x64的操作系统,编译链接生成一个X64的驱动,并且将其拖入到Win7操作系统内,如下图所示
11. 将该驱动装载并且启动,Windbg便可调试该程序了
12. 点击Reg'nRun按钮后Windbg如下图所示
同样调试方法与在VS中的一样,由于驱动加载到内存中是在内核空间所以在上面加断点会导致整个操作系统停止运行
Win10的双机调试的配置方法与Win7一样,这里就不在累述
(完)