一、Debug问题
(1)debug过程中,在watch窗口中看不到局部变量的值,显示not in scope,并且警告variable "变量" was set but never used。
原因:编译器把变量优化掉了。局部变量,如果在函数中没有赋值操作,或者赋值后没有任意操作,就会被编译器优化。例如下面的例子,idq是全局变量不会被优化;i是局部变量,被赋值,有操作,没有优化;state为什么没有使用,因为state接收了返回值之后,没有输出,也没有赋值操作了。
解决办法:
1、在定义时加上volatile
关键字,以明确告诉编译器不要优化它。
2、将KEIL工程优化等级设置为Level0(-O0),不优化任何代码。
(2)调试某个项目是发现单步执行的时候,箭头一会往前一会往后,不会按照写定逻辑运行,原因是KEIL5开启优化等级。
解决办法: Keil。改成0级优化,也就是不优化,重新编译执行即可
二、KEIL界面说明
(1)优化等级
优化等