阅读:2215回复:17
驱动调试步骤纠正-放70分
(我用2000DDK+VC的方法来编写驱动程序,使用softice来调试程序。本人编写的是protocol驱动,现在程序已经写了,但调试步骤恐怕有误)
我在程序里是使用DebugPrint来提示的,但现在我无法看到这些字句。(我在DriverEntry下来的第一句语句就有DebugPrint了,还是无法出现我想看到的提示。) 我搜索了一轮有关的帖子(尤其是mailme 的帖子,*^-^*),得到下面的步骤,一一列出,希望高手不吝赐教。 第一步:用VC编写好的驱动(内有DebugPrint调试信息),使用DDK的Checked Build Envitonment来编译, --获得一个.sys的文件。命名为aaa.sys,放在F:\\下 第二步:用“ Start SoftICE”来激活softice(Ctrl+D能唤出来的状态) 第三步: 使用softice的“symbol loader”, 1)设置---modul的设置(当然就只设置一次:) ) * 选菜单module下的settings * general里,只将prompt for missing source打勾,其余不管 * debugging里,选load symbol information * Translation里,选symbols and source code和package source with symbol * modules and files不用管,是用来在系统启动时调试驱动用的 2)Load--- * 从菜单里选中“OPEN MODULE”,或者点击“OPEN” * 在弹出的对话框里,选中我要load的文件aaa.sys * 在modul的菜单条里选择“load”,或者是点击“load”按钮。 3)translate--- * 点击modul菜单下的“translate”或者是translate按钮。则生成一个.nms的文件 4)退出symbol loader 第四步: 在SOFTICE中执行“file*”列出所有源文件,然后\"file 文件名”看代码。 第五步: 用F9加断点,然后“g”,退出softice 第六步: 安装这个协议驱动aaa.sys,然后没有什么现象。 有人告诉我最后一步是运行自己的exe调试程序,然后程序调用.sys的驱动时softice会弹出来,停在断点位置 。 我的问题是: 1 我的步骤错在哪里了,高人能指点一下吗? 2 对于类似于TCP/IP的协议驱动,写exe调试程序这是必要的步骤吗? 3 如果写exe调试程序是必要的,那DDK模板程序里DebugPrint里的提示信息又有什么用阿? 到底协议驱动的调试步骤是怎么样的阿,我实在百思不得其解。我也看了一些softice的帮助,但找不到对应的部分。我的期限快到了,恳求大虾能给指点一下,最好是详细一点的提示。 非常所有能看到这里的朋友,:) [编辑 - 4/4/03 by ABUABU] |
|
最新喜欢:aqua_a...
|
沙发#
发布于:2003-04-04 16:58
没有人愿意理我吗?~~~~ |
|
|
板凳#
发布于:2003-04-04 17:27
呵呵!估计是因为系统没有加载你的驱动程序的原因吧!在你安装了协议驱动程序之后,进入softice(ctrl+d)用sym看看吧!如果符号有对应的ring0地址,那么证明了驱动程序已经加进内核了!只是有可能你断点的地方没有运行到所以没有弹出softice,如果这些符号没有对应的内核地址,那么证明你的驱动程序没有加载。有可能是因为需要从新启动机器才加载你的驱动程序,有可能是因为你使用了一些系统不支持的函数,也有可能是你安装的问题了,
对于说符号有对应的地址指的是当加载了驱动程序和符号的话!那么使用sym之后,对应的就会出来你的驱动程序的符号,在符号之前有一个地址,当没有加载程序的话,那么这些符号都是一些相对偏移。就是一些什么00001004,一般的值都不会大。如果程序加载了,特别是驱动程序,那么就会出先8:xxxxxxxxx的地址! |
|
地板#
发布于:2003-04-04 19:00
1、感觉上没有错 2、既然你是协议驱动,那可能用exe调试就不是必要的了,不过你必须让系统运行你加了断点的代码的 3、debugprint可以让你不用到处加断点,他可以直接将调试信息输出,呵呵,不过总感觉没有直接看代码直观 你可以依照挑战者说的,看看你的驱动是否已经加载。 呵呵,我刚刚开始学习网络驱动,所以不能给你更多帮助咯,大家一起进步吧。 |
|
|
地下室#
发布于:2003-04-05 00:38
估计是driver没有被call,没有run到断点处,当然不会跳出si了
除非出错了 :D |
|
5楼#
发布于:2003-04-05 13:09
有可能,那就只有从一开始加断点了:(
|
|
|
6楼#
发布于:2003-04-05 22:18
感谢大家的指导,我周一再试一下~~~(*^-^*,因为和我的另外的软件冲突了,所以只在公司的机器装这个东西)
哦,还有一个小问题就是,我的softice窗口出现时,我的鼠标是看不到的,只是鼠标移动的时候,屏幕上有数据变化,还有一些蓝色的诸如COPY的菜单条出现。这是正常的吗?我看过一些帮助,好像是可以用鼠标来选择到那个区的哦~~~~~是不是我的版本问题阿?我的好像是3.25的版本。论坛上有朋友说用4.27版最好,是吗? |
|
|
7楼#
发布于:2003-04-08 15:05
DebugPrint 在 Checked 下输出,在 Free 下不输出,
若要在 Free下输出,要在 #include\"DebugPrint.h\"前加 #define DEBUGPRINT 1 |
|
8楼#
发布于:2003-04-08 15:16
感谢大家的指导,我周一再试一下~~~(*^-^*,因为和我的另外的软件冲突了,所以只在公司的机器装这个东西) 我的也是这种情况,我估计这是正常的,我的SOFTICE是DS2。01版的! |
|
|
9楼#
发布于:2003-04-09 09:37
感谢大家的指导,我周一再试一下~~~(*^-^*,因为和我的另外的软件冲突了,所以只在公司的机器装这个东西) 实际上差不多,其实我的4.27现在有时也出现这种情况,不过比以前少多了,而且这也没什么大问题 |
|
|
10楼#
发布于:2003-04-09 09:59
你可以到http://www.sysinternals.com下载一个DebugView就可以看到了,或者用DriverWorks里Tools的DriverMonitor
|
|
|
11楼#
发布于:2003-04-09 11:07
好不容易阿,终于上了论坛了~~~:_) ~~~感谢站长的不懈努力!!!!致敬!!!!
言归正传:) 各位大虾,我用sym看了一下,出现下面的东西: ,text(0001:00000000,0000125c byte) 0001:00000A7F $L11736 0001:00000A6E $L11739 0001:00000A7A $L11755 0001:00000FB9 CleanExit 0001:00000086 DriverEntry 0001:00000C87 ERROR 0001:00000233 ERROR_233 0001:00000E0D ERROR_e0d 0001:00000AC8 IoDecrement 0001:00000AA4 IoIncrement …… 我运行的是一个正确的程序,是已经测试过正常的协议驱动。使用的是Checked build;我是在网络邻居那里安装它的,和以前我成功安装它的方法一样,安装过程中也没有任何不正常的现象~~~~ 我莫名阿~~哦,请问大虾,这是怎么回事阿? |
|
|
12楼#
发布于:2003-04-09 17:58
感谢大家的指导,我周一再试一下~~~(*^-^*,因为和我的另外的软件冲突了,所以只在公司的机器装这个东西) 我也碰到好几次,按两下ctrl+d,隐藏再恢复,就没事了 |
|
|
13楼#
发布于:2003-04-09 18:08
好像应该是先translate后load吧。还有,出现这样的问题有可能是你的windows和softice版本有冲突。我记得我们好像以前用sp2+softice4.26好像是有这样的问题,不过不能肯定。现在我们用sp3+4.27工作良好!
|
|
|
14楼#
发布于:2003-04-10 08:53
SoftICE(Driver suit 2.7)里不是带了一个DriverMonitor的工具吗,DebugPrint的输出应该可以在看得到,我觉得这个工具用起来真是挺方便的。
|
|
15楼#
发布于:2003-04-11 10:03
我想在帮助文档里应该有所有的信息,大概是我没有很认真吧,呵呵,懒了点阿~~~
大家介绍的软件,我再好好瞧瞧~ :D 谢谢大家的回答。 [编辑 - 4/11/03 by ABUABU] |
|
|
16楼#
发布于:2003-04-12 17:17
呵呵,说了要你把分用在刀刃上,不过还是要谢谢你的分 :cool:
|
|
|
17楼#
发布于:2003-04-12 23:36
忘记告诉大家,我的问题我在帮助里找了答案
***************** mailme,我从你的很多帖子上得到了救命的知识,所以这分是份答谢,感谢你对入门级菜鸟的热心帮助,*^-^* 当然了,其他的朋友我也感激不尽,等有机会了再报答大家,谢谢^0^ |
|
|