AChen
驱动牛犊
驱动牛犊
  • 注册日期2002-02-25
  • 最后登录2002-10-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:9571回复:44

请回答(SoftIce调试)

楼主#
更多 发布于:2002-04-18 01:36
问题一:现象如下
{
...
char ch;
...
...
...
}

如上定义的一个临时变量,为什么在单步调试时发现ch的值会经常变化,没有直接对其进行操作的代码!!!

问题二:
为什么经常 watch 这样的临时变量,会invalid expression

问题三
XxxDeviceControl
{
BYTE b;

b= *(BYTE*)Irp->Associate->SystemBuffer;

}
可是为什么b却得不到SystemBuffer地址的第一个字节的内容?

最新喜欢:

sourensouren RED_springRED_sp...
This posting is provided "AS IS" with no warranties, and confers no rights.
wozhuce
驱动小牛
驱动小牛
  • 注册日期2004-04-02
  • 最后登录2005-11-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-08-20 19:03
我的经验,char变量,不管是全局还是局部,用WATCH都能看到(不超出作用域 )。而ULONG 型的,用WATCH 看就是 INVALID EXPRESSION 。我也很想知道原因。
asynliao
驱动牛犊
驱动牛犊
  • 注册日期2003-12-02
  • 最后登录2004-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-12-30 10:29
问题二解答:全局变量用watch看,即ww;局部变量用local看,即wl。我是这样解决的,局部变量在watch中看的话都是Invalid,Expression.
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-12-17 19:28
这就是指针带来的问题,JAVA,C#因此取消了指针
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
Taoyue
驱动牛犊
驱动牛犊
  • 注册日期2001-10-30
  • 最后登录2005-08-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-11-27 16:42
嗯!
好贴!
我想去海的另一边!
dj_ukyo
驱动小牛
驱动小牛
  • 注册日期2003-03-13
  • 最后登录2009-06-02
  • 粉丝0
  • 关注0
  • 积分118分
  • 威望16点
  • 贡献值0点
  • 好评度14点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-11-19 11:23
我看了也长见识 ;)
jhome
驱动牛犊
驱动牛犊
  • 注册日期2002-07-04
  • 最后登录2005-01-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-10-10 15:49
it\'s very good for this question
jhome
驱动牛犊
驱动牛犊
  • 注册日期2002-07-04
  • 最后登录2005-01-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-10-10 15:47
提的问题真好
liudong
驱动牛犊
驱动牛犊
  • 注册日期2002-11-18
  • 最后登录2005-12-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-10-08 23:27
我发现用WATCH m_Kstrabc
这种有下划线的变量都不能查看,不知道为什么??
tzhou66
驱动牛犊
驱动牛犊
  • 注册日期2003-10-04
  • 最后登录2009-01-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-10-04 04:41
Because array can not be displayed in Watch, you will see it.
theseus
驱动牛犊
驱动牛犊
  • 注册日期2003-03-30
  • 最后登录2003-11-13
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2003-08-21 16:15
象这样的讨论越多越好。
------------------------------------------------------------ 痛并快乐
wangjisheng
驱动小牛
驱动小牛
  • 注册日期2002-11-06
  • 最后登录2011-07-29
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望20点
  • 贡献值0点
  • 好评度9点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-08-11 20:16
rem set up an NT checked build environment

set BUILD_ALT_DIR=chk
set NTDBGFILES=1
set NTDEBUG=ntsd
set NTDEBUGTYPE=windbg
set MSC_OPTIMIZATION= /Od /Oi
hsdjl
驱动小牛
驱动小牛
  • 注册日期2002-09-29
  • 最后登录2009-01-19
  • 粉丝0
  • 关注0
  • 积分4分
  • 威望4点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2003-07-29 07:36
经常来,还是有收获的啊!
luowei74
驱动小牛
驱动小牛
  • 注册日期2003-07-21
  • 最后登录2007-04-16
  • 粉丝0
  • 关注0
  • 积分162分
  • 威望21点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2003-07-23 17:52
不行就看看那个地址,直接监控地址肯定没错
melodylux
驱动牛犊
驱动牛犊
  • 注册日期2003-07-09
  • 最后登录2010-07-19
  • 粉丝0
  • 关注0
  • 积分15分
  • 威望2点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2003-07-14 22:08
学了些,^_^
Adebu
驱动牛犊
驱动牛犊
  • 注册日期2003-07-14
  • 最后登录2003-07-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2003-07-14 14:41
你定义的变量如果不再使用, 他的内存可能被占用.
Tom_lyd
驱动大牛
驱动大牛
  • 注册日期2001-09-02
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
16楼#
发布于:2003-07-09 17:27
ch是临时变量,当程序跑出此函数时,此临时变量所占存储单元,可能被其他变量使用,softice监视的只是临时变量所占的固定地址的存储单元,当使用这个存储单元的变量有一个被重新赋值,他就被改变了。

为什么不看看前面讨论的内容再作结论?
Tom_lyd
lihuiming_sx
驱动牛犊
驱动牛犊
  • 注册日期2002-12-02
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
17楼#
发布于:2003-07-09 17:16
ch是临时变量,当程序跑出此函数时,此临时变量所占存储单元,可能被其他变量使用,softice监视的只是临时变量所占的固定地址的存储单元,当使用这个存储单元的变量有一个被重新赋值,他就被改变了。
wolfwoo22
禁止发言
禁止发言
  • 注册日期2003-03-11
  • 最后登录2016-04-11
  • 粉丝0
  • 关注0
  • 积分930分
  • 威望8970点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
18楼#
发布于:2003-06-16 13:24
用户被禁言,该主题自动屏蔽!
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
19楼#
发布于:2003-05-26 11:51
问题一:
使用DELPHI曾遇到过类似问题,可能对你有帮助.
var
CommBuff:array 1..10 of char;
ByteNumber:integer;
.....
ByteNumber值经常发生离奇变化,后来发现在运行过程中CommBuff经常越界,内存分配时可能ByteNumber紧跟CommBuff之后,导致ByteNumber出现异常.
 

Delphi我没有用过,但是丛VC编译器来看,本地变量使用堆栈来管理的,当然如果你越界肯定要破坏堆栈,还有在VC中,你没有进行初始化,则系统会所用0xCDCDCDCD来初始化(Debug版中,发行版好像是随即数),不知这对你有没有帮助
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
上一页
游客

返回顶部