electrlife 发表于 2012-9-18 16:04:08

发现IAR6.40.3中多任务函数中有的局部变量显示无效!

本帖最后由 electrlife 于 2012-9-19 13:21 编辑

今天换上了最新的IAR6.40.3,但是在调试时发现时有的局部变量显示无效。
使用了UCOS,在任务中定义的局部变量,在LOCAL的变量窗口中显示无效的。
不知什么原因?
比如定义局部变量OS_ERR os_err;这个变量在LOCAL窗口也有显示,
但是就是显示无效?

各位有没有发现这个问题啊!注设置优休等级为none!
补个图:



usingavr 发表于 2012-9-18 16:13:22

加 volatile 试试

electrlife 发表于 2012-9-18 16:41:31

usingavr 发表于 2012-9-18 16:13 static/image/common/back.gif
加 volatile 试试

问题是这个变量在LOCAL中有显示,只是显示无效!

这个局部变量已经使用,个人觉得无需volatile!
不知道它是如何优化的,我的编译器选项的优化设置已为None!!

已补上图!请看图中代码的写法!

electrlife 发表于 2012-9-18 16:43:20

usingavr 发表于 2012-9-18 16:13 static/image/common/back.gif
加 volatile 试试

还有其它任务中的有些变量,也是这样!

usingavr 发表于 2012-9-18 17:01:06

Location R4 ,R5是指通用寄存器吗?不是应该在栈里吗?是否设置问题或者IAR本身问题?

electrlife 发表于 2012-9-18 17:18:21

usingavr 发表于 2012-9-18 17:01Location R4 ,R5是指通用寄存器吗?不是应该在栈里吗?是否设置问题或者IAR本身问题?...

是通用寄存器。
也没优化!
程序运行没问题!只是程序调试不方便,很多局部变量看不到!

electrlife 发表于 2012-9-18 19:04:59

大家有没有注意到的啊!
路过的帮忙顶顶,谢谢!

electrlife 发表于 2012-9-19 08:25:01

再顶顶啊!各位帮忙看看,谢谢!

zchong 发表于 2012-9-19 08:40:48

MDK下优化时会遇到这个问题,IAR下你既然没优化不应该出现这样的问题啊,单步多走几步看看

electrlife 发表于 2012-9-19 09:17:15

zchong 发表于 2012-9-19 08:40MDK下优化时会遇到这个问题,IAR下你既然没优化不应该出现这样的问题啊,单步多走几步看看 ...

单步试了,程序运行没问题。
通过汇编代码,这几个局部变量分配了地址,
且在这个任务的堆栈,是正确的。可就是调试时不显示。
我想知道大家是不是也有这种情况?

electrlife 发表于 2012-9-19 09:18:08

zchong 发表于 2012-9-19 08:40MDK下优化时会遇到这个问题,IAR下你既然没优化不应该出现这样的问题啊,单步多走几步看看 ...

单步试了,程序运行没问题。
通过汇编代码,这几个局部变量分配了地址,
且在这个任务的堆栈,是正确的。可就是调试时不显示。
我想知道大家是不是也有这种情况?

electrlife 发表于 2012-9-19 12:13:57

难道各位没有遇到这样的情况吗??{:sad:}

cyr_hongfeng 发表于 2012-9-19 12:42:04

把工程发上来看看

electrlife 发表于 2012-9-19 12:47:37

cyr_hongfeng 发表于 2012-9-19 12:42 static/image/common/back.gif
把工程发上来看看

相关的代码已贴上图了。
公司的项目不方便贴上整个工程,请见谅!

electrlife 发表于 2012-9-19 12:57:04

难道,大家在使用UCOS类似的操作系统时,调试没有此问题吗?{:sad:}

electrlife 发表于 2012-9-19 13:17:46

cyr_hongfeng 发表于 2012-9-19 12:42 static/image/common/back.gif
把工程发上来看看

临时制作了一个工程,仿真的调试,
可以直接使用IAR6.4运行,查看Locals窗口就会发现os_err 显示无效!!!

jingwaner 发表于 2012-9-19 13:46:05

楼主,能否给个6403的和谐文件。。。

谢谢~

electrlife 发表于 2012-9-19 16:45:00

jingwaner 发表于 2012-9-19 13:46 static/image/common/back.gif
楼主,能否给个6403的和谐文件。。。

谢谢~

和以前的各谐文件一样,我用的是以前的5.4的,只要装过IAR,直接装就可以!
明天上班给你传!

不过劝你还是别装了,所谓的增强的编辑器功能,真的很鸡肋,
工程大了以后,goto define什么的都无法使用,唉!!
不当小白鼠了,准备卸载了!!{:cry:}

shuimubai 发表于 2012-9-20 09:52:37

electrlife 发表于 2012-9-19 16:45 static/image/common/back.gif
和以前的各谐文件一样,我用的是以前的5.4的,只要装过IAR,直接装就可以!
明天上班给你传!



代码编辑功能还是很鸡肋的如你所述 代码定义 变量定义等功能不能使用 很不方便 我也准备卸载

electrlife 发表于 2012-10-19 15:42:43

6.40.5老样子!在调试时还是不能显示一些局部变量。

jknew2008 发表于 2012-10-24 13:39:17

用IAR4.41时也是出现过跑工程也出现这种问题,感觉还是编译器自动代码优化的问题,真想看得话建议还是弄个全局的变量给它再赋值吧。麻烦点 就看反汇编那边的寄存器的值。

electrlife 发表于 2012-10-25 12:12:46

jknew2008 发表于 2012-10-24 13:39 static/image/common/back.gif
用IAR4.41时也是出现过跑工程也出现这种问题,感觉还是编译器自动代码优化的问题,真想看得话建议还是弄个 ...

呵呵,这个问题确定是IAR 的编译器的问题。不仅如此,现在的6.4版本,如果工程大了
go to defintion of xx的都无法使用了,连f()的函数显示功能也不行了!总是提醒:
Unknown version browser information!

jknew2008 发表于 2012-10-25 13:33:26

electrlife 发表于 2012-10-25 12:12 static/image/common/back.gif
呵呵,这个问题确定是IAR 的编译器的问题。不仅如此,现在的6.4版本,如果工程大了
go to defintion of x ...

工程我都是Source insight看得。iar 的代码编辑区就打断点的时候用下。

fxk1220 发表于 2013-3-6 16:43:26

大家好,请问下,这个有和谐文件吗?哪位有,能否传下,谢谢。QQ:360302388.

szcs 发表于 2013-6-11 23:31:33

我测试了一下, 6.30.7没有这个问题

electrlife 发表于 2013-6-12 00:11:38

szcs 发表于 2013-6-11 23:31 static/image/common/back.gif
我测试了一下, 6.30.7没有这个问题

6.4以前的都无此问题,新版的才有,主要是在使用OS时,会用这样while(1){}这样的方式建立任务时
就会出现以上问题,现改成如下方式,问题得以解决!
const volatile int const_ture = 1;
while(const_ture){}
页: [1]
查看完整版本: 发现IAR6.40.3中多任务函数中有的局部变量显示无效!