#2
云端的神2008-12-13 14:42
|
■计算机技术交流群41986564■ 本群由中大,华工,西电,南京航空航天大学,人大等众多著名高校的优秀计算机人才组成,其中有在读研究生,优秀大学生,在职技术人员。本群人员发展方向广泛,技术讨论气氛热烈,有专攻C++大规模软件设计的人员,也有苦心研究算法的人员,也有精于底层,痴迷破解,逆向技术的人员。本群以技术交流,互相学习,经验指导,信息共享为宗旨,现招收10名群成员(人员快满)。希望你们中有技术,有思想,有见识的人能来加入本群■计算机技术交流群41986564■
因为在静态存储区,编译器没办法确定它的值。 有可能某些非软件原因更改了它的值,这个行为是编译器无法控制的。
人仁任
(549113861) 09:32:30
add(3,4);
墨
(84807858) 09:32:43
我汗,c应该是3吧?[自定义表情]
墨
(84807858) 09:33:02
哦
墨
(84807858) 09:33:04
你改了
人仁任
(549113861) 09:33:08
是的
codelative
(609754795) 09:33:13
编译器无法看到静态存储区的值?
墨
(84807858) 09:33:15
但是人你在哪里怎么看到的?
人仁任
(549113861) 09:33:15
其实道理很简单
人仁任
(549113861) 09:33:28
c作为返回值
人仁任
(549113861) 09:33:44
所以必然最后会把值存到eax里面
墨
(84807858) 09:33:47
/cat[C小鸟](214322071) 09:32:25 因为在静态存储区,编译器没办法确定它的值。 有可能某些非软件原因更改了它的值,这个行为是编译器无法控制的。 不知道应不应该问,cat,我还是想问为什么编译器无法看到静态存储区的值?
人仁任
(549113861) 09:33:55
所以你监视eax就OK了
墨
(84807858) 09:34:19
恩,eax..............汇编里面的XXX??我还没学汇编
codelative
(609754795) 09:34:39
寄存器,
人仁任
(549113861) 09:34:43
你不用学什么汇编
人仁任
(549113861) 09:34:46
你会用就好了
/cat立少
(214322071) 09:34:52
调试器为了监视程序的运行,一般会在要调试的程序里加入一些调试信息(例如一些符号)
墨
(84807858) 09:35:21
是回答 不知道应不应该问,cat,我还是想问为什么编译器无法看到静态存储区的值? 吗
/cat立少
(214322071) 09:35:39
而静态变量是被保存在静态区域,直接保存为一段没内值,而失去了符号,所以调试器无法找到该值
/cat立少
(214322071) 09:36:01
一段内存值
codelative
(609754795) 09:36:01
哦
墨
(84807858) 09:36:02
人仁任 <renrenrenshk@ 09:34:46 你会用就好了 我程度还是很低,接触类似eax很少,我先记下来吧
人仁任
(549113861) 09:36:48
[自定义表情]
/cat立少
(214322071) 09:36:50
简单说...就是微软生成的调试信息中没有包含静态变量的符号
人仁任
(549113861) 09:36:55
点击这个按钮
/cat立少
(214322071) 09:36:57
所以不能引用显示它的值
人仁任
(549113861) 09:37:09
然后你一直监视eax的变化