keil优化等级与调试
刚在调试时遇到一个让人费解的现象,在keil的debug点单步调试直接给我全速运行了.
由于是新的电脑环境,keil版本和使用的link都不是我常用的,一时也找不出原因。
在一番折腾后发现,使用云途YCT工具生成的keil工程的优化等级竟然默认是 -O1.
改成-O0后,问题解决。
编译器优化是“以机器为中心”的,它会破坏源码的线性结构,此时程序可能不是按你预想的方式来执行的;而调试是“以人为中心”的,需要严格保持源码顺序。Level 0 本质是让编译器牺牲效率,换取调试信息的完整性
一般都建议产品在开发阶段使用 -O0,在发布阶段可以尝试使用 -O1 或 -O2。