VMware实现单机使用WinDbg进行调试的方法

来源:互联网 发布:物流配送软件 编辑:程序博客网 时间:2024/06/05 17:50

VMware实现单机使用WinDbg进行调试的方法

转载请保留本人网址:http://blog.csdn.net/sunboyhch
具体步骤如下:
1 设置 VMware 的虚拟com
1.1 运行 VMware ,点击 "Edit virtual machine settings"


1.2 点击 "Add..." 来运行 VMware 的 Hardware Wizard

 

1.3 选择 "Serial Port",点 "下一步"


1.4 选择 "Output to named pipe",点 "下一步"


1.5 第一框里保持默认的 "\\.\pipe\com_1"

 

第二框里选"This end is the server."
第三框里选"The other end is an application."
选中 "Connect at power on"
1.6 选中 "Yield CPU on poll",然后点完成。


1.7 这样就完成了虚拟com的设置。 重新启动一下。


2 设置 VMware 虚拟出来的 guest os

2.1 设置boot.ini

在c:\下,可以找到boot.ini,可以用记事本打开它。我们需要在 guest os 的启动项上加些参数,才能够使用WinDbg调试它。我们可以在现有的行后面直接加参数,不过强烈推荐复制一个新行,在新行的后面加参数。这样在调试启动有问题的时候,我们可以方便的换回原来的启动方式。下面就是我改好的boot.ini。
其中 "multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect
是原来的行。
"multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200 "

是我新加的将来用于 WinDbg 调试的行。

------------------------------------------------------------------------------------------

[boot loader]

timeout=10

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" /noexecute=optin /fastdetect
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP debug" /noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200

-------------------------------------------------------------------------------------------

这里还要注意的是

1   timeout不要为0,否则直接启动默认的项。新行后面加上了参数 /debug /debugport=com1 /baudrate=115200 ,可以看到 debugport=com1 ,baudrate=115200 。 

2  在win7中要把 debugport=com_1 


2.2 设置com1端口的速度
在 guest os 的设备管理器中把com1端口的速度也就是"每秒位数"项,设为和上面一样的115200。

3 设置 WinDbg

我们需要告诉WinDbg通过pipe进行连接和连接的速度。可以在命令提示符(cmd.exe)下加参数
-k com:port=\\.\pipe\com_1,baud=11520,pipe 运行WinDbg(VMware Support 中没有提到 baud=11520 这个参数,其实这是个比较重要的参数)。 更方便的方法是在桌面建立一个WinDbg的快捷方式,在该快捷方式的属性,"目标"框中,加上参数 -k com:port=\\.\pipe\com_1,baud=11520,pipe 。这样运行这个快捷方式启动的WinDbg就完成了设置。参数的具体作用,可以参考 WinDbg 的帮助文件。

也可以为 “....Debug.exe”  -b -k com:port=\\.\pipe\com_1,baud=115200,pipe

 


4 推荐的操作顺序

4.1 首先运行 VMware ,启动 Guest OS ,到系统启动选择,选择 " Microsoft Windows XP debug " 项,先不要按回车。

4.2 通过刚才设置好的快捷方式运行WinDbg。

4.3 在 Guest OS 中选择 " Microsoft Windows XP debug " 项,按回车。

4.4 稍等片刻,就连接上了。如果很长时间没有连接上的话,可以按 WinDbg 菜单中的 "Debug"->"Kernel Connection"->"Resynchronize"。

4.5 最后按 WinDbg 菜单中的 "Debug"->"Break" ,你就可以向 WinDbg 下命令了。


其他

5.0此外,您也可以在命令提示符下使用 .sympath 命令来设置符号路径。您可以将 symsrv 语法和其他符号路径组合在一起。例如,使用以下语法来指定两个或更多个符号路       径:f:\BusObjSymbols;SRV*f:\localsymbols*http://msdl.microsoft.com/download/symbols

    该语法用分号来分隔符号路径。
5.1 VMware Support 中还提到了可以通过修改虚拟机的配置文件来改变虚拟串口的速度,有兴趣的话可以参考 VMware Support 中的方法。
5.2 WinDbg 的菜单项 "View"->"Show Version" 可以看到一些相关信息。


WinDBG   http://www.microsoft.com/whdc/devtools/debugging/installx86.Mspx

dbgView  http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx

WDK下载 (两个都可以)(6001.18002)

http://www.microsoft.com/downloads/en/confirmation.aspx?familyId=2105564e-1a9a-4bf4-8d74-ec5b52da3d00&displayLang=en

http://www.microsoft.com/downloads/details.aspx?FamilyID=2105564e-1a9a-4bf4-8d74-ec5b52da3d00&displaylang=en

转载请保留本人网址:http://blog.csdn.net/sunboyhch

 
 
 
原创粉丝点击