设为首页 收藏本站
查看: 1118|回复: 0

[经验分享] 借助VMware实现单机使用WinDbg(转)

[复制链接]

尚未签到

发表于 2015-4-6 07:35:49 | 显示全部楼层 |阅读模式


来源:
简介:调试器中,SoftICE可以说是鼎鼎大名。而 Microsoft 的调试器 WinDbg 则有很多 SoftICE 不具备的非常有用的功能。对于从事 Windows 系统研究和驱动开发的人来说,WinDbg 实在是件上好的兵器,值得推荐。不过要想 ...  关键字: VMware 虚拟机 虚拟

调试器中,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=11520,pipe 运行WinDbg(VMware Support 中没有提到 baud=11520 这个参数,其实这是个比较重要的参数)。 更方便的方法是在桌面建立一个WinDbg的快捷方式,在该快捷方式的属性,"目标"框中,加上参数 -k com:port=\\.\pipe\com_1,baud=11520,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 下命令了。


其他
5.1 VMware Support 中还提到了可以通过修改虚拟机的配置文件来改变虚拟串口的速度,有兴趣的话可以参考 VMware Support 中的方法。
5.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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-54199-1-1.html 上篇帖子: [Linux 安装]centos安装vmware tools 下篇帖子: VMWare虚拟机下载|最新版|破解版
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表