打印
[ZLG-MCU]

IAR 4.41A下watch变量问题

[复制链接]
2822|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jtingwang|  楼主 | 2008-5-21 19:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不知道有没有人遇到过如下问题:

版本:IAR 4.41A

使用操作系统,在某个任务中,定义一个局部变量,程序中对其赋值,并在赋值语句后设置断点,通过watch窗口看到该局部变量没有被正确赋值(里面是随机值),但是程序全速运行起来,其执行结果和预期的结果相同,没有什么异常。通过printf语句将该变量值打印出来,和预期的结果也相同,就是断点停下来后,通过watch窗口看时,看到的值不对。

若不使用操作系统,通过watch看到的变量值又是对的!

相关帖子

沙发
zlgarm| | 2008-5-21 19:17 | 只看该作者

正常现象

正常现象。

(zlgarm_zsg)

使用特权

评论回复
板凳
jtingwang|  楼主 | 2008-5-21 19:42 | 只看该作者

会不会有什么隐患

周工果然神速!^_^
谢谢,先

但是这是什么原因呢?

IAR的bug?
还是我的程序加入操作系统之后,使得IAR变得显示不正常,会不会有什么隐患在里面呢?

使用特权

评论回复
地板
zlgarm| | 2008-5-22 08:42 | 只看该作者

原因有二

原因有二:
1)编译器把某些变量优化了,观察窗口看到的是某个过度变量,而不是你想看的变量,但不会影响执行。我在调试电机算法时,设置了速度优化,偶尔会有这种情况。这在KEIL上仿真8051也会有的。

2)仿真器和仿真软件不同步,例如读取ADC序列中的值,观察窗口看到的通常不是序列中真正的值。

(zlgarm_zsg)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

171

帖子

1

粉丝