阅读:1790回复:10
softice 一问
我正在用softice调试wdm驱动,请问用什么命令向softice中的变量观察窗口添加新的变量?先谢了
|
|
沙发#
发布于:2002-04-06 16:56
watch varible
|
|
|
板凳#
发布于:2002-04-06 17:15
谢谢!但不知为什么有的变量用你的方法可以,有的提示 “INVALID EXPRESSION\".
|
|
地板#
发布于:2002-04-06 18:11
你WATCH的可能是函数里面的局部变量,那么你就必须要运行的第一个语句才可以了!例如
MyFun(int i) { //1 ULONG C; ULONG B=0; C=1; DbgPrint(\"Hellow word %d\",i);//2 }//3 你要在光标条经过了语句1之后才能WATCH i的值 |
|
地下室#
发布于:2002-04-06 18:58
谢谢! 我也注意到这个问题了。但是也不完全成功。
例如: ULONG ControlCode = IrpStack->Parameters.DeviceIoControl.IoControlCode; ULONG InputLength = IrpStack->Parameters.DeviceIoControl.InputBufferLength; ULONG OutputLength = IrpStack->Parameters.DeviceIoControl.OutputBufferLength; // DebugPrint(\"DeviceIoControl: Control code %x InputLength %d OutputLength %d\", // ControlCode, InputLength, OutputLength); KIRQL irql; KeAcquireSpinLock(&BufferLock,&irql); 当光标运行到KeAcquireSpinLock(&BufferLock,&irql); 时,我watch InputLength 成功,但watch OutputLength 失败。我都给搞晕了。 不知你是否遇到过这种情况. |
|
5楼#
发布于:2002-04-08 14:44
我也遇到类似问题?
|
|
|
6楼#
发布于:2002-04-08 15:22
你说的失败指的是INVALID EXPRESSION吗?
如果是,那我没有碰到过,或者你用汇编代码来看吧! 如果不是,那么这个变量有可能是不可以使用的一个地址!你没有权限去查看他 |
|
7楼#
发布于:2002-04-10 10:57
我看不是那个问题.
你用的是否是softice? softice经常源码不对齐. 如果在2000下,要刷新你的sym. 刷新后也经常不能对齐,那就是你的版本有bug.下补丁吧. 站上有. :P |
|
8楼#
发布于:2002-04-10 14:17
有可能是编译优化把局部变量优化掉了,可以看看汇编,放在哪个寄存器中
|
|
9楼#
发布于:2002-04-14 14:54
谢谢!我使用vc编的程序,用什么方法转化为汇编呢?
|
|
10楼#
发布于:2002-05-04 17:12
个人认为,这个根本就是softice的bug.
|
|
|