VMWARE+WINDBG

 

XP利用VMWare和WinDbg调试驱动程序
2008-11-28 17:21

利用VMWare和WinDbg调试驱动程序http://www.diybl.com/ 2008-3-31  网络 点击:164  [ 评论 ]
文章搜索:     【点击打包该文章】 被过滤广告
【本站开通在线QQ讨论群】

心里总感觉 SOFTICE 的发展快到末路了。果然在 2006 年时Compuare 宣布停止 SOFTICE 开发。这里消息确实令很多人心痛。但与此同时,Windows 的配套调试器 windbg , cdb 等不断更新,功能不断强大,你必须选择它,虽然它内核调试速度不理想。后来我知道了 syser debuger, 国人写的不错的调试器,基本上 SOFTICE 命令等相似,上手很快,单机调试即可,速度挺快。但是要开发windows 内核程序,最好还是 windbg,至少 windbg 与系统的兼容肯定不会差吧。因为我自己的机器配置不高,所以平时玩的时候就用 syser , 但在公司真正解决问题时还是用 windbg。windbg 除了速度慢点(还能忍受,现在我公司的机器是AMD双核的),还有就是初次使用配制比较麻烦,你如果真实的使用 2 台机器调试那问题可能会更多。我每次重装系统后,都要上网找资料然后一遍遍配制挺烦人的,这次总结一下。

首先,先下载http://msdl.microsoft.com/download/symbols/packages/windowsxp/WindowsXP-KB835935-SP2-slp-Symbols.exe?符号表,然后安装到真实系统中。
再下载http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.5.3.8.exe?WinDbg程序的最新版本,同样也安装到真实系统中。

接下来我们要在虚拟机中装系统了,我用的是WinXP SP2。安装完成后修改boot.ini文件。在里面[operating systems]节中加入一行,
" multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows?XP Professional - debug" /fastdetect /debug /debugport=com1 /baudrate=115200 "

随后关闭系统。配制虚拟机的硬件,点击 "Edit virtual machine settings",添加一个Serial Port,选择"Output to named pipe",然后下一步,第一框里保持默认的 "\\.\pipe\com_1"
第二框里选"This end is the server."
第三框里选"The other end is an application."
选中 "Connect at power on"
然后点击 "Advanced>>" 然后在新窗口中选中 "Yield CPU on poll"。保存退出。
好了,以上就是虚拟机系统要做的全部事情。

在真实系统中,我们要在设备管理器中。找到Com1口,然后再属性页中修改他的速率为115200。
然后为使用方便,创建一个WinDbg的快捷方式。快捷方式的命令行为
"C:\Program Files\Debugging Tools for Windows\windbg.exe" -y C:\Windows\Symbols\ -b -k com:port=\\.\pipe\com_1,baud=115200,pipe
这里面-y后面的路径就是我们前面安装符号表的路径。

使用时,首先运行虚拟机系统,到bootloader选择进入哪个系统的时候,我们先按一下上下,将倒计时停止。然后再到真实系统中运行刚才我们创建的WinDbg快捷方式。运行完成后再在虚拟系统中选择带有调试标志的系统即可。此时回到真实系统,稍等一会就可以看到WinDbg输出信息告诉我们两个系统已经连接上了。到此调试器已经和VMware 虚拟机连接成功了,下面就可以进行期待已久的调试工作了。

WIN7调试内核设置,在上面的配置基础上

在Vista中已经全面采用BootConfig的工具, 所以要设定 Kernel Debug必须遵照以下的步骤才能设定成功.

(1) 执行 Command Prompt 时, 以 Administrator 的身份. 因为只有 Administrator 身份才有权限改变 Boot Config, 其它的 Account 都不行 (即使是具有 Administrator 的权限也不行).

(2) 使用 bcdedit /dbgsettings 查看现在的设定值 ( Default 为 COM1, 115200 ), 可以更改为自行的设定, 命令为 bcdedit /dbgsettings 1394 channel:23 (例: 使用 1394, channel 为 23). 一般不需要修改。

(3) 复制一个开机选项, 命令为 bcdedit /copy {current} /d DebugEntry , DebugEntry为选项名称, 可以自行命名. 然后将结果的 GUID 值复制一份.

(4) 使用 bcdedit /debug {XXXXXXXX-XXXX-XXXX...(GUID)} ON 命令将此选项的 Debug 功能打开. 参数 /debug 后面接的 GUID 值为步骤 (3) 的结果.

(5) 改变开机选项的次序, 命令为 bcdedit /displayorder {current} {XXXXXXXX-XX....(GUID)}. 这一项其实一般不用执行。

(6) 使用 regedit 更改 registry 的项目. 在 HKLM"SYSTEM"CurrentControlSet"Control"Session Manager 的子机码下增加一个 Debug Print Filter 的 Key, 然后在这个 Key 之下增加一个DEFAULT的 ValueName, 并且设定此 Value 为 REG_DWORD 的型态, 其值为 0x00000008 这点比较重要,否则你在程序中使用DbgPrint输出的信息,在主机端将看不到。

(7) 重新开机, 就可以使用 Kernel Debug 了!!!

(8)WinDBG的快捷方式里添加“-b -k com:pipe,port=\\.\pipe\com_1,resets=0”这些内容

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值