[ZLG-MCU] IAR 4.41A下watch变量问题

[复制链接]
3617|3
 楼主| jtingwang 发表于 2008-5-21 19:07 | 显示全部楼层 |阅读模式
不知道有没有人遇到过如下问题:<br /><br />版本:IAR&nbsp;4.41A<br /><br />使用操作系统,在某个任务中,定义一个局部变量,程序中对其赋值,并在赋值语句后设置断点,通过watch窗口看到该局部变量没有被正确赋值(里面是随机值),但是程序全速运行起来,其执行结果和预期的结果相同,没有什么异常。通过printf语句将该变量值打印出来,和预期的结果也相同,就是断点停下来后,通过watch窗口看时,看到的值不对。<br /><br />若不使用操作系统,通过watch看到的变量值又是对的!
zlgarm 发表于 2008-5-21 19:17 | 显示全部楼层

正常现象

正常现象。<br /><br />(zlgarm_zsg)
 楼主| jtingwang 发表于 2008-5-21 19:42 | 显示全部楼层

会不会有什么隐患

周工果然神速!^_^<br />谢谢,先<br /><br />但是这是什么原因呢?<br /><br />IAR的bug?<br />还是我的程序加入操作系统之后,使得IAR变得显示不正常,会不会有什么隐患在里面呢?
zlgarm 发表于 2008-5-22 08:42 | 显示全部楼层

原因有二

原因有二:<br />1)编译器把某些变量优化了,观察窗口看到的是某个过度变量,而不是你想看的变量,但不会影响执行。我在调试电机算法时,设置了速度优化,偶尔会有这种情况。这在KEIL上仿真8051也会有的。<br /><br />2)仿真器和仿真软件不同步,例如读取ADC序列中的值,观察窗口看到的通常不是序列中真正的值。<br /><br />(zlgarm_zsg)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

67

主题

171

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部