windbg+VM 设置内核调试环境(双机调试)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-30 09:07   456   0

虚拟机是XP情况:

启动项添加调试启动,并设置波特率为115200

具体操作可在boot.ini中添加如下代码:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWindows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200

此处应该注意虚拟机中出现的是serial 1 还是serial 2,若是2,则需要修改、debugport=com2,否则导致连不上

注意看图:(图上的是2,即 com2,此时设置系统调试模式的时候的com要设为com2)

虚拟机是WIN7 WIN8 WIN10情况:

1.启动一个管理员权限的命令行窗口.

2.执行如下命令将当前的启动入口复制一份:

bcdedit /copy {current} /d "Kernel Debug"

其中双引号重的字符串为新启动入口的名称。如果执行成功显示类似如下的信息:

“已将该项成功复制到 {f349d9f9-660a-11e1-892b-b9453034af9f}。”

花括号中的内容是新启动入口的GUID,用来唯一标识这个启动入口。

3.执行如下命令对这个启动入口启动内核调试:

bcdedit /debug {f349d9f9-660a-11e1-892b-b9453034af9f} on

4.设置目标主机与主机间的通信参数

bcdedit /set {f349d9f9-660a-11e1-892b-b9453034af9f} debugtype serial

bcdedit /set {f349d9f9-660a-11e1-892b-b9453034af9f} debugport 1

bcdedit /set {f349d9f9-660a-11e1-892b-b9453034af9f} baudrate 115200

5.执行bcdedit 列出刚刚创建的启动项和参数,确认以上设置都已经被记录下来。

设置完成以后可以通过CMD-> msconfig的引导来查看结果 如图

整体命令:

bcdedit /copy {current} /d "Kernel Debug"

bcdedit /debug {056a4d97-70f9-11e6-9068-a0e8445a84f6} on
bcdedit /set {056a4d97-70f9-11e6-9068-a0e8445a84f6} debugtype serial
bcdedit /set {056a4d97-70f9-11e6-9068-a0e8445a84f6} debugport 1
bcdedit /set {056a4d97-70f9-11e6-9068-a0e8445a84f6} baudrate 115200

虚拟机是SERVER 2012情况:

1.这里注意默认VM是有打印机的这样会造成串口1被暂用 恰好VM双机调试只能在串口1上 所以必须先删除打印机 再添加

未删除以前添加如图:

删除后添加如图:

vmware中的设置:

1打开相应 vmware虚拟机上的 “Virtaul Machine Settings“

2. “Hardware”选项中 ----> 点击“Add" 添加一个串口设备 SeriallPort

3. "Next",在 "Serial Port" 里选中 “Output to named pipe"

4. "next",然后如下设置

5. 确定之后,回到如下界面,在右脚"Virtual Machine Settings"页面时,在“I/O Mode”里选中“Yield CPU on poll“

6. Ok之后就设定完毕了。

Windbg设置

创建windbg的一个桌面快捷方式,然后,右键->属性,在目标中的引号后面添加如下:

-b -k com:pipe,port=\\.\pipe\com_1,resets=0

示例如下:

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_1,resets=0

还需要设置windbg以管理员身份运行,否则会出现拒绝访问的提示,具体设置如图:

操作方式提示

如果在虚拟机系统启动过程中,如果打开了windbg之后,整个系统就像死机,不动了。估计是windbg启动后设定了断点做调试,试试按F5,或者g这样就可以恢复原来的状态。

多系统同时调试的设置

比如想同时开启3个WINDBG调试VM中的XP,win7,win8.可以想象成有一台配置很强大的PC假定他为PC_A 他有3个串口,还有3台PC 每台PC只有一个串口,假定他们为PC_1,PC_2, PC_3现在需要让PC_A同时通过串口调试连接其他3台PC进行调试, 需要注意的地方有以下几点:

1.每个虚拟系统中设置都和以前一样,都设置为com1,这个可以理解为每个系统都只有一个串口设备,当然都是com1了

2.在vmware中的设置有变化,他直接对应的是PC_A,它有三个串口,所以设置分别为\\.\pipe\com_1 \\.\pipe\com_2 \\.\pipe\com_3 分别对应了PC_1 PC_2 PC_3的串口,这样一来PC_A就模拟出了3个串口,且分别和PC_1 PC_2 PC_3对应起来了 具体如图:

3.设置windbg,以前是创建一个windbg的快捷方式,现在是创建3个 分别设定为

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_1,resets=0

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_2,resets=0

"C:\Program Files (x86)\Windows Kits\8.0\Debuggers\x86\windbg.exe" -b -k com:pipe,port=\\.\pipe\com_3,resets=0

具体如图:

这样调试相应的PC_X时 运行相应的图标即可

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP