dawner1
驱动牛犊
驱动牛犊
  • 注册日期2002-02-27
  • 最后登录2002-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1737回复:7

有关SoftIce的用法,请各位帮忙!

楼主#
更多 发布于:2002-03-25 18:23
为什么?为什么?怎么会这样?每次当我使用SoftIce的时候,第一次装载好*.sys文件后,当我使用命令
File *.cpp 后,在WC窗口里显示出源代码,在没有使用命令前可以利用F3可以进行代码切换,一旦我切换
整个调试窗口到Windows再切换回来时,在WC窗口就出现汇编代码而不能显示原来的*.cpp的源代码,这时
利用F3也不能切换代码?为什么?怎样才能在WC窗口一直显示代码?另外,我还有一个问题,在用SoftIce
进行调试时,一般的步骤是什么?我们要达到的目的是什么?怎样利用堆栈或windows data区来判断调试程
序的正确与否??有哪位高手知道,请告诉我!先表谢意!
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-03-25 18:40
你切换回SoftIce后显示的汇编代码并不是你原来的源代码当然不能用F3显示。你不能再敲一次File *.cpp?
调试的目的还用说?就是Debug(除错)啊。
使用WD(内存数据)和WL(局部变量)窗口。
调试方法当然就是断点(F9)、单步运行(F8进入子程序F10)、单步运行(不进入子程序F10)、运行到断点处(g)。
够了吧?
 :D :D :D
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
houjzs
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2002-07-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-03-25 19:04
当你切换到Windows时,你要Debug的代码就已经执行完了。这是再切换到Softice时,你实际上中断了你在切换一刹那时系统正在执行的线程,当然得不到源代码了,要想得到,除非再次启动你的要调试的程序。(多少给点分吧)
dawner1
驱动牛犊
驱动牛犊
  • 注册日期2002-02-27
  • 最后登录2002-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-03-25 19:21
斑竹:
   看样子你对Softice很精,那我问几个问题好吗?
   我在利用*.exe来调试时用到*.sys,我通过命令装载了*.sys后可以调试*.exe源代码,但我不知道怎样调试*.sys源代码,应该怎样做呢?要应用程序来调用*.sys吗?请指教!
流氓兔
驱动老牛
驱动老牛
  • 注册日期2001-06-27
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-03-25 22:05
告你一个最简单的办法,反正我是长用。
在要停的地方加个DebugBreak() OR INT 3
就象VC在哪行按F9样的!!
我是流氓!!!我怕谁!!! 不!!应该是我是老流氓!!!我怕谁!!![img]http://202.98.116.70:888/cgi-bin/newmov/bbs/attachment.cgi?forum=4&topic=25473&postno=1&type=.jpg[/img]
流氓兔
驱动老牛
驱动老牛
  • 注册日期2001-06-27
  • 最后登录2005-02-28
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-03-25 22:25
怎样利用堆栈或windows data区来判断调试程序的正确与否
――――――――――――――――――――――――――――
我不大理解你说的是啥,如你说的是函数成功与否。
一般的函数可以通过反回值也就是EAX 或指针参数在就是GetLastError了。
:D
我是流氓!!!我怕谁!!! 不!!应该是我是老流氓!!!我怕谁!!![img]http://202.98.116.70:888/cgi-bin/newmov/bbs/attachment.cgi?forum=4&topic=25473&postno=1&type=.jpg[/img]
tigerzd
驱动老牛
驱动老牛
  • 注册日期2001-08-25
  • 最后登录2004-12-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-03-26 08:36
斑竹:
   看样子你对Softice很精,那我问几个问题好吗?
   我在利用*.exe来调试时用到*.sys,我通过命令装载了*.sys后可以调试*.exe源代码,但我不知道怎样调试*.sys源代码,应该怎样做呢?要应用程序来调用*.sys吗?请指教!

在98下好象不能动态加载WDM驱动程序。如果你的驱动程序是实际的PNP硬件,你可以通过插入和拔出加载和卸载驱动程序,调试其DriverEntry和AddDevice例程。应用程序用CreateFile(对应驱动程序的IRP_MJ_CREATE服务例程)、ReadFile--IRP_MJ_READ、WriteFile--IRP_MJ_WRITE、DeviceIoControl--IRP_MJ_DEVICE_CONTROL等等。
犯强汉者,虽远必诛! [img]http://www.driverdevelop.com/forum/upload/tigerzd/2002-12-13_sf10.JPG[/img]
dawner1
驱动牛犊
驱动牛犊
  • 注册日期2002-02-27
  • 最后登录2002-03-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-03-26 19:35
  我用的是Windows2000下的驱动,在我调试时是否要应用程序来调用驱动程序??
游客

返回顶部