您的位置:首页 > 其它

windbg+VM 设置内核调试环境

2012-02-24 11:56 253 查看
虚拟机是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启动后设定了断点做调试,试试按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时 运行相应的图标即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: