20楼#
发布于:2003-04-04 11:50
不好意思,没有解决问题,所以不好给分呀。 你的结构问题我认为是这样的: 编译器默认的边界对齐好像是8字节,也就是说尽管你只要求分配一个char,一个字节,系统还是给你分配了8个字节,请尝试在定义该结构之前使用 #pragma pack(1) 在该结构定义之后 #pragma pack |
|
21楼#
发布于:2003-04-11 17:30
探讨:
question 1:寄存器原因,楼上已经说明 question 2:watch 局部变量有时候正常有时候不行,就算是前后定义的2个变量也不一样,想不通!基本上我会在调试的时候把需要看的东西设置成全局的或者赋给一个全局的指针/变元。由于SoftICE一次最多支持8个表达式watch,,难道是给优化掉了? question 3:应该是不能直接存取系统分配的 NonPagedPool 类型的内存,应该先把Irp->AssociateIrp->SystemBuffer里面的数据copy到本地的一个NonPagedPool的类型缓冲区才可以。 举例: pNPBuffer=ExAllocatePoolWithTag(NonPagedPool,200,TAG); NdisAllocateMemoryWithTag(&pBuffer,200,TAG); 执行以下操作pNPBuffer和pBuffer的 内容是不一样 的 RtlCopyMemory(pNPBuffer,Irp->AssociateIrp->SystemBuffer,200); RtlCopyMemory(pBuffer,Irp->AssociateIrp->SystemBuffer,200); 同理。在softice里面用命令 d Irp->AssociateIrp->SystemBuffer看到的数据 并非真实数据。 question 2:似乎watch一个局部结构总是可以的,简单变量好像都不行(或者显示并非实际值) [编辑 - 4/24/03 by kaput] |
|
|
22楼#
发布于:2003-04-18 21:09
目前还没有遇到这种问题,不过受益不少,可以在以后的工作中避免了
|
|
|
23楼#
发布于:2003-05-13 18:33
内存越界
|
|
24楼#
发布于:2003-05-15 12:29
问题一:
使用DELPHI曾遇到过类似问题,可能对你有帮助. var CommBuff:array 1..10 of char; ByteNumber:integer; ..... ByteNumber值经常发生离奇变化,后来发现在运行过程中CommBuff经常越界,内存分配时可能ByteNumber紧跟CommBuff之后,导致ByteNumber出现异常. |
|
25楼#
发布于:2003-05-18 14:36
我用的softice调试过程中(注:我用的是ds2.6带的)发现也有变量在单步调试中不能观察他的变量值,说这个类型没有定义,而我确实在这个函数内调试,应该在这个函数的生命周期内,这个问题一直困扰我,不知那位大侠指点一下,在softice中如何正确的查看变量值?
|
|
26楼#
发布于:2003-05-26 11:51
问题一: Delphi我没有用过,但是丛VC编译器来看,本地变量使用堆栈来管理的,当然如果你越界肯定要破坏堆栈,还有在VC中,你没有进行初始化,则系统会所用0xCDCDCDCD来初始化(Debug版中,发行版好像是随即数),不知这对你有没有帮助 |
|
|
27楼#
发布于:2003-06-16 13:24
用户被禁言,该主题自动屏蔽! |
|
28楼#
发布于:2003-07-09 17:16
ch是临时变量,当程序跑出此函数时,此临时变量所占存储单元,可能被其他变量使用,softice监视的只是临时变量所占的固定地址的存储单元,当使用这个存储单元的变量有一个被重新赋值,他就被改变了。
|
|
29楼#
发布于:2003-07-09 17:27
ch是临时变量,当程序跑出此函数时,此临时变量所占存储单元,可能被其他变量使用,softice监视的只是临时变量所占的固定地址的存储单元,当使用这个存储单元的变量有一个被重新赋值,他就被改变了。 为什么不看看前面讨论的内容再作结论? |
|
|
30楼#
发布于:2003-07-14 14:41
你定义的变量如果不再使用, 他的内存可能被占用.
|
|
31楼#
发布于:2003-07-14 22:08
学了些,^_^
|
|
32楼#
发布于:2003-07-23 17:52
不行就看看那个地址,直接监控地址肯定没错
|
|
33楼#
发布于:2003-07-29 07:36
经常来,还是有收获的啊!
|
|
34楼#
发布于: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 |
|
35楼#
发布于:2003-08-21 16:15
象这样的讨论越多越好。
|
|
|
36楼#
发布于:2003-10-04 04:41
Because array can not be displayed in Watch, you will see it.
|
|
37楼#
发布于:2003-10-08 23:27
我发现用WATCH m_Kstrabc
这种有下划线的变量都不能查看,不知道为什么?? |
|
38楼#
发布于:2003-10-10 15:47
提的问题真好
|
|
39楼#
发布于:2003-10-10 15:49
it\'s very good for this question
|
|