ppluu
驱动牛犊
驱动牛犊
  • 注册日期2003-11-26
  • 最后登录2011-09-19
  • 粉丝0
  • 关注0
  • 积分51分
  • 威望15点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1860回复:4

windbg调试环境的建立

楼主#
更多 发布于:2003-12-19 07:35
我是一个新手,刚开始试着编制和调试WDM驱动,这两天刚把WINDBG调试环境建立起来,对于一个新手一切都是困难的,走了不少弯路,重起了N次机器,也有了一些经验教训,想把WINDBG调试的环境搭建详细地写下来,不知个位(菜鸟)有没有兴趣。

最新喜欢:

gaooogaooo
znsoft
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2023-10-25
  • 粉丝300
  • 关注6
  • 积分910分
  • 威望14796点
  • 贡献值7点
  • 好评度2410点
  • 原创分5分
  • 专家分100分
  • 社区居民
  • 最爱沙发
  • 社区明星
沙发#
发布于:2003-12-19 09:41
 hehe,所有的感想和心得都可以帖。
http://www.zndev.com 免费源码交换网 ----------------------------- 软件创造价值,驱动提供力量! 淡泊以明志,宁静以致远。 ---------------------------------- 勤用搜索,多查资料,先搜再问。
ppluu
驱动牛犊
驱动牛犊
  • 注册日期2003-11-26
  • 最后登录2011-09-19
  • 粉丝0
  • 关注0
  • 积分51分
  • 威望15点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-20 03:38
先说一下我的硬件配置, 我有3台机器:一台笔记本,两台台式机,不幸的是笔记本上没有串口(比较新的LAPTOP都没有串口了), 台式机到是有串口,可只有一个显示器,平时有一台台式机只做samba server 和pinter server,也不需要显示器,但现在要建立WINDBG环境必须要两台显示器,我可不想再买一台显示器,家里也没地方摆呀:(

于是我从华军软件下载了一个remote access, 这样就可以把笔记本当做host机的显示器了,在此说明,我的三台机器都通过hub相连,相当于一个小的局域网。

先做一条cross的串口cable, 2,3 互换的那种,很简单,只要3跟线就信。 host 和 target我都用串口1, 连上以后先用超级终端试一下,我用57600的波特率,保证串行通信的硬件环境正确无误。

我开发调试驱动都在target上,安装了VC6和WIN2K DDK, 打开boot.ini文件,如下:

[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

加一行配制菜单如下:

[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\" /fastdetect /MAXMEM=256 /DEBUGPORT=COM1 /BAUDRATE=57600

以上参数的意义: 串口1, 57600波特率, 限制内存256M。 这样在重起机器时就会多一个选项“启动调试环境”,很奇妙 :),因为我并没有输入“启动调试环境”。

至此target端的设置就好了,回到host端,文档上说只需要安装windbg,我不知怎么做,就把WIN2KDDK又装了一边,在桌面上建一个windbg的快捷方式,给如下的启动参数:

D:\\NTDDK\\bin\\windbg.exe -k x86 com1 57600
 意义是X86平台,串口1, 57600波特率。和target端的设置对应。

运行windbg, 按下F5:

Thread Create:  Process=0, Thread=0
Kernel debugger waiting to connect on com1 @ 57600 baud

OK, 回到target端, 启动机器,选择“启动调试环境”菜单,等着吧,不一会,你就可以看到windbg的命令窗口告诉你有什么内核模块被调入了,有时还会有断点的消息,我不知道是为什么,因为我没有对target的内核做任何设置,不知断点从何而来,表现在target端,就是死机,启动中止。 我开始时不知怎么回事,只好重起机器,可每次到这都要死, 后来发现,在host端按下F5键,target的启动过程就又继续了。 很有趣,你只要在host端发出中止的命令,target端就会死机,按F5就又恢复了。

到此为止,调试环境已经建立,在编译DRIVER时,打开DBG编译选项,就可以在host的windbg窗口看到DbgPrint()的信息了。
beckchen
驱动牛犊
驱动牛犊
  • 注册日期2002-11-11
  • 最后登录2005-07-18
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-02-25 13:59
我是菜鸟一个,刚刚接手驱动。
楼主能够帮我看一个问题吗?
硬件环境: 一台台式机,一台笔记本;
软件环境:都安装win2k,vc6,ddk,symbols
用串口线测试完超级终端后,将台式机作为host,笔记本作为target。 笔记本修改boot.ini,增加debug模式,在host上打开C:\NTDDK\bin\windbg.exe -k x86 com1 57600,按f5 ,host上的dindbg命令窗口显示kernel debugger waiting to connect on com1 @ 57600 baud,然后启动笔记本进入debug 模式
可是接下来没有楼主所说的调用信息,而target过一会就没有任何响应,热启动无效,只能重启。

不知中间过程中遗漏什么步骤或者哪里的设置出错,本人刚刚接触windbg,一切都请各位大虾指点,多谢多谢!
neowang
驱动牛犊
驱动牛犊
  • 注册日期2004-02-17
  • 最后登录2010-02-04
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-02-27 15:57
哈哈!
我只有一台笔记本,也没有串口,但我装了两个XP系统,,我在其中的一个系统用WINDBG调试另外一个系统,这样多爽呀,干嘛搞的那么麻烦呢 :D
游客

返回顶部