[技术问答] 在Keil开发环境的调试模式(Debug Mode)下,为什么查看的变量...

[复制链接]
1413|12
 楼主| probedog 发表于 2022-2-23 15:36 | 显示全部楼层 |阅读模式
当在调试模式中产生中断时,要查看变量内容值,但是在watch window中却显示“not in scope”,如下图所示:
FAQ103-1.jpg
这是因为编译器在优化之后,会将变量存储在R1等寄存器中,而watch window仅能够从内部存储器中取值,所以会显示“not in scope”。

解决方法有3种:
  • 将变量设置成全局变量。
  • 将变量设置成volatile型。
  • 将”Options for Target…”中”C/C++”的”Optimization “设置成”Level 0 (-O0)”,如下图所示:
FAQ103-2.jpg

极客晨星 发表于 2022-11-26 18:00 | 显示全部楼层
还很没遇到过,感觉关于options这块都没设置过

岁月反驳 发表于 2022-11-26 18:32 | 显示全部楼层
你可以看看,选择view中的一个update这种,就好了
喜爱弄人 发表于 2022-11-26 19:04 | 显示全部楼层
有可能是优化的事儿哈,属实

情和欲 发表于 2022-11-26 19:36 | 显示全部楼层
你就默认就行吧,按理来说优化等级都是默认吧

晚晚皆安 发表于 2022-11-26 20:08 | 显示全部楼层
你要打断点就好了,打完断点就能看到数据了

风吻过你的不羁 发表于 2022-11-26 20:40 | 显示全部楼层
最好是动态变化一下才可以,不然数据也会显示这个的

討厭和人归類 发表于 2022-11-26 21:12 | 显示全部楼层
我遇到过,设置全局变量行,或者断点在这个函数之下就好了

笨蛋无需搭理 发表于 2022-11-26 21:44 | 显示全部楼层
你这个操作也是可以的,但是没必要把优化等级改动的

銀河 发表于 2022-11-26 22:16 | 显示全部楼层
感觉是你仿真没调试好,你在你想看的变量的地方,加个断点试试,数据就有了

漫过岁月 发表于 2022-11-26 22:48 | 显示全部楼层
设置成全局变量属实有意义,能解决这个问题

backlugin 发表于 2022-12-15 10:38 | 显示全部楼层
你把变量添加到scope里面。              
tifmill 发表于 2022-12-15 14:52 | 显示全部楼层
推荐使用printf输出吧。              
您需要登录后才可以回帖 登录 | 注册

本版积分规则

493

主题

3361

帖子

4

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