【转帖】利用VMWare和WinDbg调试驱动程序

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



安装驱动开发环境:

1,首先下载 DDK,从微软的网站上搜索“DDK”,一般会搜索到:
     “Windows Server 2003 DDK”
      http://www.microsoft.com/whdc/DevTools/ddk/default.mspx

2,安装 DDK
      ..........

3,编译驱动程序
      具体如何写 makefile 和 source 我就不说了,比较老套。
      点击某个你需要的版本的编译环境,到驱动所在目录下,敲入 build,回车即可开始编译。



以下重点介绍如何利用 WinDbg + VMWare 来调试驱动程序。
虚机中的系统选择 Windows Server 2003 Enterprise Edition, no server pack


下载 Windows Symbols:

下载地址:
http://www.microsoft.com/whdc/devtools/debugging/symbolpkg.mspx
我的 VMWare 虚拟机环境是 Windows 2003 Enterprise,
所以需要下载的是:Windows Server 2003 symbols with no Service Pack
展开 Windows Server 2003 and Windows XP x64 Edition 下载:
Windows Server 2003 x86 retail symbols, all languages (File size: 168 MB - Most customers want this package.)


下载 WinDbg 调试工具
下载地址:
http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.5.3.8.exe?WinDbg
程序的最新版本,同样也安装到真实系统中。



虚机中,添加启动选项:

我们要在虚拟机中装系统了,我用的是
Windows Server 2003 Enterprise Edition。安装完成后修改 C 盘根目录下的 boot.ini 文件。在里面 [operating systems] 节中加入一行,

multi(0)disk(0)rdisk(0)partition(1)/WINDOWS="Windows Server 2003, Enterprise - debug" /fastdetect /debug /debugport=com1 /baudrate=115200


为虚机增加虚机 COM 口:

随后,
关闭虚拟机中的系统。开始配制虚拟机的硬件,
点击
"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"。保存退出。


好了,以上就是虚拟机系统要做的全部事情。


修改本机 COM 口速率配置:
1,在真实系统中(也就是你现在用的系统),在设备管理器中。找到
Com1 口,然后再属性页中修改他的速率为115200
2,为了以后使用的方便,需要创建一个 WinDbg 的快捷方式。快捷方式的命令行为
"C:/Program Files/Debugging Tools for Windows/windbg.exe" -y SRV*C:/Windows/Symbols/*http://msdl.microsoft.com/download/symbols -k com:pipe,port=//./pipe/com_1
我设置的是:
"C:/Program Files/Debugging Tools for Windows/windbg.exe" -y SRV*C:/Win2003ServerSymbols/*http://msdl.microsoft.com/download/symbols -k com:pipe,port=//./pipe/com_1
因为我的 Windows 2003 的 Symbols 存放在 C:/Win2003ServerSymbols/ 里。

这里面 -y 后面的路径就是我们前面安装符号表的路径。
特别注意的是:上面这个参数好多文章写的是错误的,我这个是对的。详细可以看 WinDebug 的帮助文件。


其他事宜:

使用时,首先运行虚拟机系统,到bootloader选择进入哪个系统的时候,我们先按一下上下,将倒计时停止。然后再到真实系统中运行刚才我们创建的WinDbg快捷方式。运行完成后再在虚拟系统中选择带有调试标志的系统即可。

此时虚拟机中会黑屏一片,WinDbg也一直显示“Wait for connect”,
这时你需要点 WinDbg >> Debug >> Kernel Connection >> Cycle Initial Break 即可。

此时回到真实系统,稍等一会就可以看到
WinDbg输出信息告诉我们两个系统已经连接上了。到此调试器已经和VMware 虚拟机连接成功了,下面就可以进行期待已久的调试工作了。




个人心得:

1,2008年08月20日
刚开始,虚机刚启动的时候我 break 然后设置断点。发现怎么都设置不上,一直提示说无法找到 Symbols,急得我把所有版本的 Symbols 都下载了,结果还是不行。后来,考虑了一下是否是因为 Win 没有启动完成,也就是没有完成 Symbols 的装载呢?结果我等到虚机中的系统出现 2003 的用户登陆界面的时候 break,哇,居然搞定了。我实在太愚蠢了!

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值