WinDBG+VMware=调试内核.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
WinDBG+VMware=调试内核 2008-07-14 20:40 呵呵,搞点突兀的标题而已。其实说的还是如何使用WinDBG和VMware来搭建调试内核的环境而已,这些网上已经有数不清的教程了,不过我喜欢自己亲手写一下。第一,把这个过程写一遍能加深印象,就算以后忘记了也可以有笔记查找,快速想起来。第二、网上的教程很多都是互相抄来抄去,连错误也抄过去了。很典型一个错误就是Baud Rate,前面还写115200,后面就写成了11520了,狂汗! 按照我这篇笔记写的步骤去做,绝对能够成功,并且还能大略地了解到为什么要这样做的原因。第1部分是步骤,如果不想看原因的,直接按部照搬就可以成功。如果还想深入点了解为什么要做这些步骤,这些步骤的含义是什么?那就请继续看第二部分。 第一部分(步骤): 先统一名称,真实的操作系统叫HostOS,在VMware里虚拟的操作系统叫GuestOS。 1.在VMware里安装好GuestOS;下载WinDBG并安装好。 2.添加一个串口 在关闭GuestOS的情况下才能添加硬件。添加串口的过程如下: 选择“串行端口”, 选择“输出命名管道”, 其他如下设置: 3.在GuestOS的boot.ini文件里填入如下内容: multi(0)disk(0)rdisk(0)partition(1)\WINDOWS=Microsoft Windows XP Professional Debug /fastdetect /debugport=com1 /baudrate=115200 如图: 4.创建一个WinDBG的快捷方式,在“目标”一栏后面加上: -b -k com:pipe,port=\\.\pipe\com_1,resets=0 如图: 5.重启GuestOS,选择Debug模式。 6.双击第4步创建的那个快捷方式启动WinDBG,它会自动去连接调试GuestOS。 可以看到,已经成功了,现在可以尽情地调试内核了。 第二部分(解说): 原理就是VMware在GuestOS虚拟一个COM口,并在HostOS创建了一个管道,这个管道的一端连接GuestOS的COM口,另一端则是WinDBG,所以HostOS(WinDBG)和GuestOS的所有数据交换都是通过这个管道来流通转发的。 1.我的电脑没有COM口,所以不能搭建调试环境? 不是的,你的电脑有没有COM口与这个调试环境没有任何关系,整个过程根本没有使用到你电脑的物理COM口。VMware只是在GuestOS虚拟了一个COM口而已。 2.在创建串口(COM口属于串口的一种)的过程中,看到指定的管道为“\\.\pipe\com_1”,我可以指定为其他吗? 可以的。这只是指定一个管道名字而已,VMware用这个名字来创建一个命名管道。我完全可以改成“\\.\pipe\liangyu”、“\\.\pipe\aaa”等等,但记得要把WinDBG的快捷方式处的管道名字更改为一样。 3.我可以在GuestOS的boot.ini文件更改那个COM口吗?比如把COM1改为COM2? 不可以的,VMware会把虚拟出的这个COM口总是定义为com1。GuestOS的其他COM口都得让位。 4.看到很多教程都说到要勾选“I/O模式”,如图: 一定要勾选吗? 这个勾选不勾选都可以,我没发现有什么大的区别。 5.在更改GuestOS的boot.ini文件的时候,增加有“/debugport=com1 /baudrate=115200”这些内容,含义是? 使用的调试端口是com1,波特率是115200。这是在告诉GuestOS现在要调试内核(操作系统),把调试信息往COM1口输出,使用的波特率是115200。 我在试验的时候发现,这个波特率其实也不一定要设为115200,完全可以修改为112233、445566等等其他数据。可能是因为WinDBG自动调节波特率来适配管道或COM口,所以波特率在这里没有实际意义。 6.WinDBG的快捷方式那里添加了“-b -k com:pipe,port=\\.\pipe\com_1,resets=0”这些内容,含义是? 大概意思就是使用管道“\\.\pipe\com_1”来进行内核调试。各个参数的说明在WinDBG的参考文档里面有,这里粘贴一下: -b (Kernel mode only) This option has two effects: 1. The debugger will break into the target computer immediately upon connection. 2. After a reboot, the debugger will break into the target compute

文档评论(0)

智慧书苑 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档