chrys
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2008-07-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1952回复:11

SoftIce问题

楼主#
更多 发布于:2002-07-03 18:36
你好:
    我是驱动初学者,现在基本上掌握了驱动开发工具的使用,想学习一下调试工具,据说softice是最好的调试工具,单机上就能debug,我试了一下,发现它不能象在应用程序里单步调试那样简单好用。

    当程序单步执行时,我想看某个变量的当前值该怎么做?比如如下语句:
    1、int a;
    2、a = 5;
现在执行完第二行,我想看变量a的值,在linux的gdb里可以用“p a”就可以看到了。在softice里我试过“watch a”、“d a”、“hex a”、“local a”……很多很多,总之我没办法看到这个变量的值,我该怎么办?

    当驱动写好后编译成.sys文件,怎样让这个文件运行起来(只有运行起来才能用softice调试),当然不能象我原来的愚笨做法――把它安装到操作系统里,饱受死机的苦痛。driver monitor好象不能启动WDM驱动程序,WDM驱动可以用工具启动它吗?

    还有哪些调试工具可以使用呢?windbg、dbgprint、driver monitor分别是什么工具?好用吗?
天才来自勤奋 知识要靠学习 [url= http://ndxz.126.com]――欢迎来我家做客――[/url]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-07-04 16:01
问题好多呀。 ;)
多看看贴子,还有帮助,问题就会少很多的。
watch a是正确的方法,可能是其他原因才看不见。
driver monitor,选Open Driver,然后Start Driver
chrys
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2008-07-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-04 16:58
arthurtu 你好:
    谢谢你给我的回答,这个问题我还是不能解决:
“当驱动写好后编译成.sys文件,怎样让这个文件运行起来(只有运行起来才能用softice调试)”,我用driverMonitor试过,提示如下错误:“ERROR(1058):The driver is marked as disabled(Start=4)in its service database entry.”在注册表中的Start设置为“3”。是不是DriverMonitor不能加载WDM的驱动啊?
天才来自勤奋 知识要靠学习 [url= http://ndxz.126.com]――欢迎来我家做客――[/url]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
地板#
发布于:2002-07-05 09:29
怎么会呢?
我立刻试了一个WDM的driver,可以open和start的。并且monitor会在registry生成一个service的。
你reboot看看
chrys
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2008-07-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-05 13:11
arthurtu 你好:
    谢谢你给我的回复,我用DriverMonitor测试时,先用open打开一个.sys文件,然后点“start”,然后提示如下错误:“ERROR(1058):The driver is marked as disabled(Start=4)in its service database entry.”,我用softice设置断点时发现,.sys的DriverEntry执行了,然后马上执行到Unload去了,然后驱动就退出了。如果reboot的话,DriverMonitor还会加载open时打开的驱动吗?是不是和操作系统有关啊,我现在用的是win2000专业版的。
    我用watch查看变量当前值时候发现有些变两可以看到,有些变量不能,提示说是无效的表达式,而我要看的变量是已经定义并赋值了的啊,用watch看变量有什么规定吗?
天才来自勤奋 知识要靠学习 [url= http://ndxz.126.com]――欢迎来我家做客――[/url]
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
5楼#
发布于:2002-07-05 17:26
确认一下DriverEntry执行是否SUCCESS
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
chrys
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2008-07-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-07-05 17:34
DriverEntry()执行永远返回STATUS_SUCCESS,应该没什么问题吧?
天才来自勤奋 知识要靠学习 [url= http://ndxz.126.com]――欢迎来我家做客――[/url]
999999
驱动牛犊
驱动牛犊
  • 注册日期2002-07-02
  • 最后登录2008-03-20
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-17 10:57
DriverEntry( )例程作为驱动程序启动时首先执行,不能保证总是能够返回STATUS_SUCCESS,如果在该例程中有硬件的初始化,DPC的初始化,事件的初始化,这些都不能保证都能成功,如果失败,要做相应处理,并返回STATUS_UNSUCCESSFUL,此时,DriverUnload( )将被调用,其他例程就不会再处理了。
wangxdong
驱动小牛
驱动小牛
  • 注册日期2002-07-08
  • 最后登录2003-01-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-07-17 14:26
我也遇到同样的问题,提示start=4,但注册表里的值是3,我只好每次都安装到系统上测试,很麻烦
请多多指教!
James.Ji
驱动老牛
驱动老牛
  • 注册日期2001-09-17
  • 最后登录2006-05-16
  • 粉丝0
  • 关注0
  • 积分-9分
  • 威望-8点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-07-17 14:46
如果你的是WDM驱动,是不能用drivermonitor启动的。只能安装成功以后,再用softice调试。否则,就需先编kmd,用monitor条好后再变为WDM。
车到山前必有路。 虽然有些土,却是我最有感触的一句话。
chrys
驱动小牛
驱动小牛
  • 注册日期2002-05-30
  • 最后登录2008-07-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-07-17 19:28
kmd程序怎么做啊?

还有,当我用watch看当前变量值时为什么有时能看到,有时看不到,watch能看所有当前变量的值吗?比如一个结构体
typedef struct _temp
{
    int a;
} t_temp;
定义
t_temp tmp;
tmp.a = 1;
t_temp *p = *tmp;
为全局变量
譬如在一个函数里单步执行时想观察p->a的值,用“watch p->a”有时可以看到这个值,有时提示“无效的表达式”这是怎么回事?

[编辑 -  7/17/02 by  chrys]
天才来自勤奋 知识要靠学习 [url= http://ndxz.126.com]――欢迎来我家做客――[/url]
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
11楼#
发布于:2002-07-18 11:20
当前的可以看,结构里面的也可以。

watch temp
那么在watch窗口,他会有个+的
游客

返回顶部