虚拟机是XP情况:
启动项添加调试启动,并设置波特率为115200
具体操作可在boot.ini中添加如下代码:
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="MicrosoftWindows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
虚拟机是WIN7 WIN8情况:
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的引导来查看结果 如图
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时 运行相应的图标即可