OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 31283|回复: 16

关于MDK调试时watch窗口为什么cannot evaluate

[复制链接]

4

主题

8

帖子

0

精华

新手上路

积分
44
金钱
44
注册时间
2014-2-21
在线时间
0 小时
发表于 2014-2-21 16:10:29 | 显示全部楼层 |阅读模式







请问下这是为什么。为什么输入变量lcdid后cannot evaluate,谢谢











正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
88
金钱
88
注册时间
2017-12-22
在线时间
22 小时
发表于 2018-11-1 09:49:21 | 显示全部楼层
魔法棒->output-> 勾选 Debug Infomation

cannot evalute 解决办法

cannot evalute 解决办法
回复 支持 1 反对 1

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2013-3-6
在线时间
0 小时
发表于 2015-2-9 23:10:15 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
我买的X3的板子好像也不可以观察变量啊,我定义一个全局变量m,放在main外,在main内m=3;然后在watch1添加了m,但是他的显示也是cannot evaluate
心中无我,眼中无钱,念中无他,朝中无人,学无止境。
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-2-21 16:40:34 | 显示全部楼层
因为你的方法有误.
应该是lcddev.id,才对.
另外,必须是当前断点处所在的函数里面有这个参数才行,或者是全局变量.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-9 23:12:32 | 显示全部楼层
回复【3楼】鹿心:
---------------------------------
你加上if(m)printf之类的语句,试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

10

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
91
金钱
91
注册时间
2013-3-6
在线时间
0 小时
发表于 2015-2-9 23:18:04 | 显示全部楼层
回复【4楼】正点原子:
---------------------------------
int m;
int main(void)
{
uint8_t ucKeyCode; /* 按键代码 */
/*
ST固件库中的启动文件已经执行了 SystemInit() 函数,该函数在 system_stm32f4xx.c 文件,主要功能是
配置CPU系统的时钟,内部Flash访问时序,配置FSMC用于外部SRAM
*/

bsp_Init(); /* 硬件初始化 */
PrintfLogo(); /* 打印例程信息到串口1 */
m=1;
if(m)
{
printf("LED4正在闪烁(闪烁频率 = 1Hz)\r\n");//我断点打在这里
printf("按下K1键点亮LED1\r\n");
printf("按下K2键点亮LED2\r\n");
printf("按下K3键点亮LED3\r\n");
printf("操作按键和摇杆会打印按键事件\r\n");
}


if可以进来,但是watch1的参数m没法看
心中无我,眼中无钱,念中无他,朝中无人,学无止境。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-2-10 23:22:50 | 显示全部楼层
回复【5楼】鹿心:
---------------------------------
是不是你用了-O2优化?
设置为-O0试试。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2015-5-22
在线时间
0 小时
发表于 2015-5-24 19:21:50 | 显示全部楼层
MDK5环境下仿真   同样是-O0优化    我也遇到过变量cannot evaluate   
但在变量处设置断点  重新编译   就能正常观察变量了
回复 支持 反对

使用道具 举报

0

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
74
金钱
74
注册时间
2013-12-29
在线时间
7 小时
发表于 2015-6-23 15:55:17 | 显示全部楼层
我也遇到了,以前用stm32f1的时候都没出现过这个问题,很奇怪
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
10
金钱
10
注册时间
2016-5-19
在线时间
1 小时
发表于 2016-5-19 15:12:14 | 显示全部楼层
zxlx 发表于 2015-5-24 19:21
MDK5环境下仿真   同样是-O0优化    我也遇到过变量cannot evalu ...

请问如何设置变量断点 C:\Users\keeny\Desktop
捕获.PNG
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-7-7
在线时间
7 小时
发表于 2016-7-7 09:40:40 | 显示全部楼层
在线调试的时候,在watch1中会自己增加出好多观察量,而且增加的都是函数 360截图20160707093809385.jpg
操作一次,就会增加很多个,但是那个函数没有运行到的
回复 支持 反对

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
46
金钱
46
注册时间
2016-7-7
在线时间
7 小时
发表于 2016-7-7 09:41:23 | 显示全部楼层
一号小鱼 发表于 2016-7-7 09:40
在线调试的时候,在watch1中会自己增加出好多观察量,而且增加的都是函数
操作一次,就会增加很多个,但是 ...

大家帮忙看看是怎么了会出现这种情况
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

初级会员

Rank: 2

积分
106
金钱
106
注册时间
2016-8-18
在线时间
23 小时
发表于 2017-7-5 15:49:46 | 显示全部楼层
要在全局变量的作用域才能看到值。
回复 支持 反对

使用道具 举报

4

主题

19

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2019-2-18
在线时间
34 小时
发表于 2019-5-4 13:11:41 | 显示全部楼层
我今天也遇到了这个问题了
也是像你一样,加了一条无意义的赋值语句,debug时也观察不到
编译会警告,提示变量从未用到
网上查了一下:
虽然这个变量你使用了,但编译器认为变量所在的语句没有意义,编译器把它优化了.
于是只剩下定义变量,并没有使用
可以加一句:
变量=变量
就可以了
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2019-7-2
在线时间
4 小时
发表于 2019-8-19 15:40:13 | 显示全部楼层
鹿心 发表于 2015-2-9 23:10
回复【2楼】正点原子:
---------------------------------
我买的X3的板子好像也不可以观察变量啊,我定义 ...

是板子的问题吗?我这几天用了块stm32f030的,结果它观察不了全局变量。。。。。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-9-27
在线时间
4 小时
发表于 2020-12-15 14:10:53 | 显示全部楼层
正点原子 发表于 2014-2-21 16:40
因为你的方法有误.
应该是lcddev.id,才对.
另外,必须是当前断点处所在的函数里面有这个参数才行,或者是全局 ...

原子哥 你好   我仿真的时候也是在函数里面  但是也是出现 cannot evaluate ,然后执行到操作这个变量时 就会 HardFault_Handler()  不知问题在哪 ??
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2019-9-27
在线时间
4 小时
发表于 2020-12-15 14:33:37 | 显示全部楼层
正点原子 发表于 2015-2-10 23:22
回复【5楼】鹿心:
---------------------------------
是不是你用了-O2优化?
设置为-O0试试。

用的是 -O0 ,单点运行  经过了另外一个函数后 形参的值为什么会变?
111.png
111.png
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-24 04:08

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表