afeidz
驱动牛犊
驱动牛犊
  • 注册日期2003-05-06
  • 最后登录2009-02-27
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
阅读:1488回复:5

请教:SoftIce调试的问题

楼主#
更多 发布于:2007-03-07 10:09
  各位大虾,小弟遇到了一个这样的问题:

我为一块PCI板卡编写了WDM驱动,安装正常,然后使用VC6.0编写了应用层程序。使用softIce进行调试,在DispatchCreate,DispatchIoControl这两个分发函数中设置了断点,运行应用层程序后,无论是CreatFile,还是DeviceIoControl,都能够被softIce捕捉到,当我开始单步调试时,奇怪的事情发生了:

我调试时打开的是一个Cpp文件(dispatch.cpp),当我按F10的时候,并不是按程序行的顺序一行一行的往下走,而是跳着走,甚至有可能跳出设置了断点的函数,跑到其它函数中去!以致我根本无法进行调试,请高手帮我解答一下这个问题:):):) [p:4]
seaquester
驱动大牛
驱动大牛
  • 注册日期2002-05-22
  • 最后登录2016-06-16
  • 粉丝0
  • 关注0
  • 积分500分
  • 威望115点
  • 贡献值0点
  • 好评度107点
  • 原创分0分
  • 专家分52分
沙发#
发布于:2007-03-07 11:26
可能是符号文件没有更新,导致符号文件与Driver不匹配,每次Build都必须重新生成符号文件,并重新加载符号文件
八风舞遥翩,九野弄清音。 鸣高常向月,善舞不迎人。
afeidz
驱动牛犊
驱动牛犊
  • 注册日期2003-05-06
  • 最后登录2009-02-27
  • 粉丝0
  • 关注0
  • 积分30分
  • 威望3点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-03-07 14:26
楼上大虾所说的可能原因我也想到过,不知道我的做法是否正确,我是如下做的:

1、从SoftICE Symbol Loader中“Remove”我的驱动程序。
2、Ctrl+D调出SoftIce,取消所有断点。
3、修改驱动程序代码
4、重新编译连接驱动程序,生成新的SYS文件
5、再SoftICE Symbol Loader中打开新的Sys文件,然后Load,这时会自动生成.nms文件。
6、Ctrl+D调出SoftIce,File dispatch.cpp文件,设置断点,然后开始调试。
7、然后就出现了我所说的问题。
8、我甚至重新运行了.inf文件。

不知道再编译驱动程序.Sys文件时,是否需要特定的参数,我是用的\a。

期待大虾们的回复[p:4]
pilixuanke
驱动中牛
驱动中牛
  • 注册日期2005-10-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分1018分
  • 威望626点
  • 贡献值0点
  • 好评度512点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-03-21 11:27
删除所有的生成的文件,全部重新编译试试
向底层开发进军!!!
yaya_jan
驱动牛犊
驱动牛犊
  • 注册日期2006-09-01
  • 最后登录2018-10-13
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望47点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-03-28 16:58
build -cZ
TedZhou
驱动牛犊
驱动牛犊
  • 注册日期2007-03-21
  • 最后登录2007-04-06
  • 粉丝0
  • 关注0
  • 积分60分
  • 威望7点
  • 贡献值0点
  • 好评度6点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-04-04 14:21
用table 命令看看 NMS文件和SYS文件是不是匹配
游客

返回顶部