(转载)借助VMware实现单机使用WinDbg

原创 2005年03月01日 23:33:00

借助VMware实现单机使用WinDbg

作者: JIURL

主页: http://jiurl.yeah.net/

日期: 2003-10-3


    调试器中,SoftICE可以说是鼎鼎大名。而 Microsoft 的调试器 WinDbg 则有很多 SoftICE 不具备的非常有用的功能。对于从事 Windows 系统研究和驱动开发的人来说,WinDbg 实在是件上好的兵器,值得推荐。不过要想使用它并不是件容易的事,它需要有两台计算机,一台调试,一台被调试。这个条件对于大多数人来说是非常苛刻的。

    今天我们介绍借助VMware实现单机使用WinDbg进行调试的方法。

    VMware Support 中说,自 4.0.18.0 版本之后的 WinDbg 都支持了通过 pipe 来进行调试,不过微软对此并没有任何说明。所以,在VMware中虚拟被调试的系统,然后通过VMware虚拟一个com端口。使用这个虚拟的端口,就可以用 WinDbg 进行调试了。

具体步骤如下:

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"
然后点击 "Advanced>>"


1.6 选中 "Yield CPU on poll"(VMware Support 中提到了这一点),然后点完成。


1.7 这样就完成了虚拟com的设置。


1.8 重新启动一下。

2 设置 VMware 虚拟出来的 guest os

现在 power on 虚拟出来的 guest os

2.1 设置boot.ini

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

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

[boot loader]
timeout=10
default=multi(0)disk(0)rdisk(0)partition(1)/WINNT
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Professional" /fastdetect 
multi(0)disk(0)rdisk(0)partition(1)/WINNT="Microsoft Windows 2000 Professional - debug" /fastdetect /debug /debugport=com1 /baudrate=115200

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

这里还要注意的是,timeout不要为0,否则直接启动默认的项。新行后面加上了参数 /debug /debugport=com1 /baudrate=115200 ,可以看到 debugport=com1 ,baudrate=115200 。参数的具体作用,可以参考 WinDbg 的帮助文件。


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


3 设置 WinDbg

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


4 推荐的操作顺序

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


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

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

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


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


? 其他
?.1 VMware Support 中还提到了可以通过修改虚拟机的配置文件来改变虚拟串口的速度,有兴趣的话可以参考 VMware Support 中的方法。
?.2 WinDbg 的菜单项 "View"->"Show Version" 可以看到一些相关信息。

参考 
Driver Debugging with WinDbg and VMWare http://silverstr.ufies.org/lotr0/windbg-vmware.html
VMware Support 相关部分 http://www.vmware.com/support/ws3/doc/ws32_devices3.html


感谢阅读 - 完

VMware实现单机使用WinDbg

  • 2009年03月12日 14:11
  • 754KB
  • 下载

借助VMware实现单机使用WinDbg

借助VMware实现单机使用WinDbg作者: JIURL                 主页: http://jiurl.yeah.net     日期: 2003-10-3     调试器中,S...
  • imquestion
  • imquestion
  • 2003-10-03 16:22:00
  • 2470

LiveKd用来在单机上实现Windbg内核调试

  前段时间用Windbg进行内核调试,用VMWare构建虚拟机组建双机环境~安装完后复杂的配置,漫长的启动过程真是一种折磨,配置完却不能在Winxp上建立虚拟环境,一查原因,我狂晕:Ghost安装的...
  • king_xing
  • king_xing
  • 2009-04-19 00:12:00
  • 3559

【转帖】借助VMware实现单机使用WinDbg

 调试器中,SoftICE可以说是鼎鼎大名。而 Microsoft 的调试器 WinDbg 则有很多 SoftICE 不具备的非常有用的功能。对于从事 Windows 系统研究和驱动开发的人来说,Wi...
  • floweronwarmbed
  • floweronwarmbed
  • 2008-11-01 14:20:00
  • 386

win10中 “windbg+vmware+win10双机调试” 设置

本文主要介绍在win10下如何设置windbg+vmware,以进行双机调试。本文主要参考:李Sir的博客(http://www.cnblogs.com/lzjsky/archive/2010/12/...
  • qq_21000273
  • qq_21000273
  • 2016-07-25 21:33:24
  • 4006

VMware+Windbg+Win7 内核驱动调试 ----(环境搭建)

本文主要记录个人安装VMware+Windbg+Win7内核驱动调试的笔记。 一、安装环境 主机:      Win7 sp1 x64 虚拟机: VMware 8  虚拟机OS...
  • qq1841370452
  • qq1841370452
  • 2016-09-08 00:34:11
  • 1950

利用VMWare和WinDbg调试驱动程序

利用WinDbg了。不过听牛人说过,WinDbg可以把内核的全部结构都显示出来,要比Softice强。等我以后测试看看。首先,最好先下载http://msdl.microsoft.com/downlo...
  • caozhenyu
  • caozhenyu
  • 2007-04-17 23:11:00
  • 2814

win10中“windbg+vmware+win7双机调试”设置

本文主要介绍在win10下如何设置windbg+vmware,以进行双机调试。本文主要参考:李Sir的博客,并浏览了大量网文,以及windbg自带的help文档和MSDN,除了综合各家的经验外,也分享...
  • Sagittarius_Warrior
  • Sagittarius_Warrior
  • 2016-05-03 16:27:42
  • 6619

WinDbg与vmware虚拟机调试配置 解决WinDbg与vmware不能连接问题

  • 2013年03月29日 17:25
  • 83KB
  • 下载

33.Windbg-VMware+windbg搭建双机调试(增加virtualKD)

虚拟机环境 1.xp 虚拟机用的是XP系统,找到XP系统打开系统盘(比如C盘),找到Boot.ini,去掉这个文件的只读属性,用记事本打开Boot.ini [boot loader] timeout=...
  • hgy413
  • hgy413
  • 2013-01-04 20:46:15
  • 5487
收藏助手
不良信息举报
您举报文章:(转载)借助VMware实现单机使用WinDbg
举报原因:
原因补充:

(最多只允许输入30个字)