打印
[技术问答]

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

[复制链接]
1130|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
当在调试模式中产生中断时,要查看变量内容值,但是在watch window中却显示“not in scope”,如下图所示:
这是因为编译器在优化之后,会将变量存储在R1等寄存器中,而watch window仅能够从内部存储器中取值,所以会显示“not in scope”。

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

使用特权

评论回复
沙发
极客晨星| | 2022-11-26 18:00 | 只看该作者
还很没遇到过,感觉关于options这块都没设置过

使用特权

评论回复
板凳
岁月反驳| | 2022-11-26 18:32 | 只看该作者
你可以看看,选择view中的一个update这种,就好了

使用特权

评论回复
地板
喜爱弄人| | 2022-11-26 19:04 | 只看该作者
有可能是优化的事儿哈,属实

使用特权

评论回复
5
情和欲| | 2022-11-26 19:36 | 只看该作者
你就默认就行吧,按理来说优化等级都是默认吧

使用特权

评论回复
6
晚晚皆安| | 2022-11-26 20:08 | 只看该作者
你要打断点就好了,打完断点就能看到数据了

使用特权

评论回复
7
风吻过你的不羁| | 2022-11-26 20:40 | 只看该作者
最好是动态变化一下才可以,不然数据也会显示这个的

使用特权

评论回复
8
討厭和人归類| | 2022-11-26 21:12 | 只看该作者
我遇到过,设置全局变量行,或者断点在这个函数之下就好了

使用特权

评论回复
9
笨蛋无需搭理| | 2022-11-26 21:44 | 只看该作者
你这个操作也是可以的,但是没必要把优化等级改动的

使用特权

评论回复
10
銀河| | 2022-11-26 22:16 | 只看该作者
感觉是你仿真没调试好,你在你想看的变量的地方,加个断点试试,数据就有了

使用特权

评论回复
11
漫过岁月| | 2022-11-26 22:48 | 只看该作者
设置成全局变量属实有意义,能解决这个问题

使用特权

评论回复
12
backlugin| | 2022-12-15 10:38 | 只看该作者
你把变量添加到scope里面。              

使用特权

评论回复
13
tifmill| | 2022-12-15 14:52 | 只看该作者
推荐使用printf输出吧。              

使用特权

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

本版积分规则

385

主题

2087

帖子

3

粉丝