keven007
驱动牛犊
驱动牛犊
  • 注册日期2002-03-06
  • 最后登录2002-07-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1819回复:8

Softice调试问题

楼主#
更多 发布于:2002-04-05 10:11
1。在调C驱动程序时,明明有变量,但打入Watch “变量名”时,总是Invalid Expression,不知是怎么回事
2。如何终止当前跟踪的线程?我每次用X,但它仍然继续执行
3。如何挂起当前跟踪的线程,比如我想返回Windows看看帮助什么的。
望大侠们指导。

最新喜欢:

hxqw2000hxqw20...
breadso
驱动牛犊
驱动牛犊
  • 注册日期2002-03-04
  • 最后登录2005-12-27
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-05 15:44
1。因为变量还没有值的原因。

 2,3禁止所有的断点。让他执行。
keven007
驱动牛犊
驱动牛犊
  • 注册日期2002-03-06
  • 最后登录2002-07-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-05 16:18
谢谢,可是我检查了一下,很多变量明明赋过值了。
比如如下代码:我想看看open 值,就是不行,很多也是这样

    POPEN_INSTANCE      open;
    PNDIS_PACKET        pPacket;
    NDIS_STATUS         status;
    NTSTATUS            ntStatus=STATUS_SUCCESS;
    PIO_STACK_LOCATION  irpSp;
    PVOID pMdlBuffer;
    PVOID pFrame;
 
    pFrame=MmGetMdlVirtualAddress(Irp->MdlAddress);   //for test
    
    open = DeviceObject->DeviceExtension;

    //
    // Check to see whether you are still bound to the adapter
    //

    DebugPrint((\"Read\\n\"));
    IoIncrement(open);
    
    if(!open->Bound)
    {
        ntStatus = STATUS_DEVICE_NOT_READY;
        goto ERROR;
    }
 .......  
jyhlc
驱动牛犊
驱动牛犊
  • 注册日期2002-03-11
  • 最后登录2005-11-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-05 17:24
编译的时候,很多变量并不一定有相应的地址空间,而可能是通过寄存器传递的 ,在你的程序里面,肯定不会有OPen变量产生,因为他直接用DeviceObject->DeviceExtension代替了open, 你可以查一查汇编看,应该是这样的。
hanpeng
驱动牛犊
驱动牛犊
  • 注册日期2001-04-28
  • 最后登录2002-08-12
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-04-05 18:08
我好象也碰到了和你一样的问题(仅限第一个问题),一般来说,SOFTICE最方便的摸过于把断点设置在函数名上了,这样一来,进入函数的时候就可以捕获,但问题是在被中断的时候,还并没有进入到函数内部的具体执行,所以任何本地变量都是看不到的,包括使用locals命令,解决办法很简单,停下来以后你在“T”,或者F8一下,然后再看你的本地变量就可以了。后面2个问题我不知道~~

不知道我对第一个问题的解释是否有一点合理性,请各位批评指正~~~ :P :P :P
keven007
驱动牛犊
驱动牛犊
  • 注册日期2002-03-06
  • 最后登录2002-07-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-04-05 18:16
谢谢。:)。我查查汇编,不过我才用Softice,还不知道怎么查?我用过好几个命令,比如打a,结果下面出来不是汇编。帮我一帮!
magicx
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2014-08-18
  • 粉丝1
  • 关注0
  • 积分-14分
  • 威望13点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-04-05 19:44
引用:
》》》》》
1。在调C驱动程序时,明明有变量,但打入Watch “变量名”时,总是Invalid Expression,不知是怎么回事
2。如何终止当前跟踪的线程?我每次用X,但它仍然继续执行
3。如何挂起当前跟踪的线程,比如我想返回Windows看看帮助什么的。
望大侠们指导。
》》》》》
我也遇到了与1。的同样的问题。
关于2。3挂起或终止当前跟踪的线程,我觉得在!调试驱动!时,好象讲不通,不能半路挂起或终止,而只能执行完当前的。
[color=red]大头鬼! :P[/color]
jyhlc
驱动牛犊
驱动牛犊
  • 注册日期2002-03-11
  • 最后登录2005-11-24
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-04-08 16:46
谢谢。:)。我查查汇编,不过我才用Softice,还不知道怎么查?我用过好几个命令,比如打a,结果下面出来不是汇编。帮我一帮!

直接用src看啊!
everjin
驱动牛犊
驱动牛犊
  • 注册日期2002-03-04
  • 最后登录2006-09-16
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-04-08 17:14
我想是DDK编译的问题。
编辑setenv.bat后,重新build 然后再用ice的watch命令。
遗憾的是我忘了怎么修改setenv.bat,好像是修改编译参数来着。
好好学习,天天向上。
游客

返回顶部