打印
[开发工具]

关于keil MDK调整优先级程序出错的解决思路

[复制链接]
564|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
51xlf|  楼主 | 2023-2-22 18:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
先说一下标准:一个好的工程,基本可以做到IDE所有优化等级通吃。

关于优化和调试的问题:只要开启优化哪怕O1也不具备调试的意义了(因为变量可能在寄存器中而不是在RAM中),只能通过串口打印的方式查看变量了,所以只有在O0状态下,代码才能生成配合仿真器读取变量的代码,另外代码的不规范导致优化过程中出现异常现象,如共享变量的访问、变量未彻底初始化访问等等,都会体现出来

很多时候我们都希望将程序开到最高优化等级,如果开启后能够正常运行,则万事大吉。如果不能正常运行或者程序异常就比较闹心。排查起来也挺闹心的,这里分享一些实战的方式。

总体解决思路是:项目开始时就开启最高优先级,调试某个文件时,单独设置最低优先级,有利于在线仿真跟踪,调试完成后都开启最高优先级。


对于之前的遗留项目可采用以下方法

分两个方向:


1、开启优化话后,部分功能不正常

这种的解决思路是把这部分的文件继续设置为低优化等级,整体工程设置为高优化等级。

2、开启优化后,直接整体卡死

这种的解决思路是整体工程设置为低优化等级,逐步开启工程文件的优化等级。

3、具体到某些函数的优化也是可以单独开启测试的。
原文链接:https://blog.csdn.net/sq2013317/article/details/128566000

使用特权

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

本版积分规则

535

主题

9633

帖子

23

粉丝