Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5463729
  • 博文数量: 671
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 7310
  • 用 户 组: 普通用户
  • 注册时间: 2006-07-14 09:56
文章分类

全部博文(671)

文章存档

2011年(1)

2010年(2)

2009年(24)

2008年(271)

2007年(319)

2006年(54)

我的朋友

分类: C/C++

2008-10-03 17:57:19

近来一直在学习驱动相关内容,所以自然牵涉到调试驱动的问题。查阅资料甚多,但还未发现有能把整个调试框架串起来的资料,现做一个总结,请各位指正,谢谢!

   一、安装windbg+vmware,配置主机与虚拟机

1、windbg是微软提供的免费的内核级的调试工具,到处可以下载

2、vmware不是免费的,不过在网上可以找到破解版。我用的是5.0的。

3、完成了上面二个软件的安装后。进入下一步工作。即配置主机和虚拟机。

4、在vmware里安装操作系统(我装的是winxp,sp2)。这个不会,请查阅相关资料。

5、编辑vmware中winxp这个操作系统的C盘下的boot.ini文件,在[operating systems]节里,添加下面一句话:

multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional - debug" /fastdetect /debug /debugport=com1

6、打开vmware中winxp的设备管理器,选择端口(com1),如图一

图一

7、双击这个"com1",在弹出的对话框中,设置如图二

图二

8、关闭vmware下的操作系统。配制虚拟机的硬件,VM->Settings->Add->加一个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"。保存退出。
好了,以上就是虚拟机系统要做的全部事情。

到此,虚拟机的设置基本完毕。

9、打开我们真实的操作系统。(我的还是winxp,sp2)

重得6,7步,不过此时是在真实的操作系统中。

10、设置windbg的快捷方式,即它运行时的参数。如下

"D:\Program Files\Debugging Tools for Windows\windbg.exe" -k com:port=\\.\pipe\com_1,baud=115200,pipe

"D:\Program Files\Debugging Tools for Windows\windbg.exe",这个串是你的windbg.exe文件所在路径,后面的是参数。分号是有的。

11、OK.所有的工作都完成了。现在(1)、打开虚拟机。并选择如图三所示

图三

12、选择图三“启用调试程序”选项,并按回车,此时vmware的操作系统处于停顿状态。这是关键的一步,很多文章里没有说清楚,导致不能调试。

13、在做完12步后,在真实操作系统中,运行windbg,看,是不是可以看到调试信息了,虽然看不懂。此时vmware下的操作系统,开始进入我们熟悉的欢迎界面了。

14、在vmware的操作里打开monitor这个软件,相信大家都用过了,然后File->Open Driver.这样就算是装载了我的们的驱动了。

15、切换到真实主机,我们在windbg中,选择File->Open source file(或者Ctrl+O),这样我们就可以调试了,调试方法和调试应用程序如出一辙,我就废话了。

注意:我们的驱动程序(即.sys)文件可以在真实系统下编写,也可以在vmware下的操作系统下编写,但最好还是在真实主机下编写,这样调试起来稍微方便一些。

写了这么多,不知是否解开了你的疑惑。有问题,我们随时沟通,谢谢!

阅读(1648) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~