请教高手:一个关于全局变量随机变化的问题

waxam06   2008-10-6 13:45 楼主

在一个源文件中定义了一个普通的全局变量,该变量在同一个PROJECT的多个源文件中被调用.
可以通过按键改变这个全局变量InputSelection的值,从而选择不同的输入源.

前期调试中切换正常.但是现在发现一个奇怪的问题,该变量的值总是莫名其妙随机的变化.用仿真器跟了一下,发现即使与变量毫无关系的操作,也会引起该全局变量的值的随机变化,很郁闷.

该全局变量没有声明成Static类型,所以可以在多个源文件中调用.

有没有人遇到过类似的问题?什么原因引起的?

回复评论 (7)

可能是内存使用方面的问题, 比如数组越界,指针错误,或者异步事件引起的。

看看有循环、数组索引等相关地方。 供参考。
点赞  2008-10-6 14:04
这个变量没有在中断中使用过,而且后来也试着在变量声明的时候加volatile修饰,结果是一样的,变量还是随机的变化
点赞  2008-10-6 15:13
1 恢复到前期调试中的程序,现有的功能一点点的加。。。
2 查看汇编代码
3 换个编译器
点赞  2008-10-6 16:42
1 试过,切换没问题的老版本,其他地方有问题,比如图象只有屏幕的1/4抖动黑白等,这些一步一步加上完后,没有问题了,暂时也可以切换,不过过一会同样的程序发现就切换不了了,古怪啊!反复试了多次了
2 看过,这个全局变量处理的时候用的R24寄存器,存在0x0919这个地址,编译器没有优化选项
3 没试过
点赞  2008-10-6 16:49
把这个变量改成有返回值的函数试试,应该没有问题
点赞  2008-10-6 17:13
哈哈哈哈

又是全局变量的祸害...

做这种事的时候,我替LZ先郁闷三分钟

想当年我刚刚出来的时候,在公司的老库里,老工程师(可能是从汇编那代过来)全部都是全局变量哈

怎么死的都不知道

具体只能一个一个跟踪了

亲爱的LZ,以后你要吸取教训了,全局变量要么不用,要么做好注释,文档要全

你现在,最好,先把程序里哪里会修改到这个变量

先找出来,运气最好的是:你能看出变化的规律,然后找到哪儿改动了这个变量

如果,你找不到,只能一个一个试

以后,读写的时候要注意了,一定要拿到权限再干,不然,死得很惨,是先把人给搞死
点赞  2008-10-6 20:03
知道什么原因了,全局变量定义的太多了,内存不足(不是说不够,因为内存不够会报错),删除一些用不着或者可以不用的全局变量就OK啦!
点赞  2008-11-14 09:33
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复