Skip to content

Latest commit

 

History

History
58 lines (42 loc) · 2.45 KB

200304301428.txt.md

File metadata and controls

58 lines (42 loc) · 2.45 KB

0.1 将VMware与Debugging Tools for Windows基于串口的远程调试功能相结合

http://scz.617.cn/misc/200304301428.txt

A: Immortal1015@smth

参看"Microsoft Knowledge Base Article - 121543"

http://support.microsoft.com/default.aspx?scid=kb;EN-US;q121543

但是这里介绍的办法与Q121543不同,没有利用真实的串口,而是命名管道。我使用 VMware Workstation 3.2,其上安装了英文版Windows XP SP1。参看帮助文件中这一 节"Debugging an Application in a Virtual Machine from the Windows Host"。

VMWare外部机器(本机)也是英文版Windows XP SP1,其上安装了"Debugging Tools for Windows 6.2"。

启动到VMware的初始界面,为XP SP1虚拟机只设置一个串口,设置如下:


Device status : Connect at power on Connection : Use named pipe Use named pipe : \.\pipe\com_1 : This end is the server : The other end is an application I/O Mode : Yield CPU on poll

必须让虚拟机以轮询方式使用串口,而非中断方式。3.0版没有这个设置,无法成功 达到本篇目的。启动XP SP1虚拟机,编辑boot.ini如下:


[boot loader] timeout=-1 default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS [operating systems] multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect /noguiboot /sos multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Kernel Debug" /noguiboot /debug /debugport=COM1 /sos

重新启动XP SP1虚拟机,选择"Kernel Debug",这个过程比较慢,耐心等待启动完成。

假设你已经在本机安装虚拟机所用符号表文件,在本机执行如下命令进行基于串口的 远程内核调试:

set _NT_SYMBOL_PATH=x:\windows\symbols kd -s -k com:pipe,port=\.\pipe\com_1,resets=0 <CTRL+C>

如果想退出远程调试的同时保持虚拟机正常运行,不得使用Q命令,必须按如下步骤 退出:

kd> bc * kd> g <CTRL+B>

一定不要与SoftICE远程调试同时使用。此外,进入过远程调试环境的虚拟机在关机 时,需要本机kd的配合,否则虚拟机挂起。虚拟机关闭后本机kd使用Ctrl-B退出。