系统测试AC5. AC6. IAR和GCC调试效果,MDK AC6不开优化调试乱跳,甚至倒序执行
首先感谢大家对上一个视频的点评回复,非常有意义的讨论,这次AC6的表现更新惊呆,不开优化都可以乱跳。【实验目的】
同样的程序代码,目的是测试C环境的调试现象。
【实验版本】
IAR版本:9.3x
MDK版本:5.3x, 含AC5和AC6
Embedded Studio:使用GCC,版本V7.1X
【视频展示】
https://www.bilibili.com/video/BV18h4y1v7yR
https://www.bilibili.com/video/BV18h4y1v7yR
【测试说明】
测试了IAR,所有优化等级均正常:
Embedded Studio开最高速度优化Level3 for speed,测试正常:
MDK AC5测试了O1和O3,调试均不正常,进入return还继续执行。
MDK AC6不开优化,设置优先级为O0,调试乱跳,这有点说不过去了。这不能怪优化问题了吧,用的AC6.18。
开成O1优化,甚至还可以倒序执行,动图效果:
更新完毕。 能否使用4.x版本测试下,看看是否正常? 按照硬汉的思路,要暂时躲避MDK了? soyshell 发表于 2023-9-9 09:33
按照硬汉的思路,要暂时躲避MDK了?
不用,MDK AC5开优化调试时,注意下即可。而AC6任何等级都要注意。
MDK别的功能还是非常好用的。 magicoctoier 发表于 2023-9-9 08:42
能否使用4.x版本测试下,看看是否正常?
我这个例子是基于H7创建的,4.X不支持H7,还不太方便测试。 要不试一下Keil Studio for VSCode看有没有改善? ilcvm 发表于 2023-9-11 09:04
要不试一下Keil Studio for VSCode看有没有改善?
等年底MDK6商业版发布了,再测测 eric2013 发表于 2023-9-9 09:37
不用,MDK AC5开优化调试时,注意下即可。而AC6任何等级都要注意。
MDK别的功能还是非常好用的。
这个要怎么注意,是不是有问题,换成MDK5就好? 我已经习惯了AC6的表现, 断点不能在C文件打, 要在汇编里面打, 在汇编里打的断点才是真的。
查错确实是比较累, 这也许是你要使用AC6高效的代价吧:lol Edmund1964 发表于 2023-9-11 20:55
我已经习惯了AC6的表现, 断点不能在C文件打, 要在汇编里面打, 在汇编里打的断点才是真的。
查错确实是 ...
AC6编译DSP浮点以外的程序没有优势。实际上切换到AC6很大程度上是想更好的执行后续新的内核芯片以及更好的使用现成的CLANG编译,毕竟不用自己花心思研究了,直接用现成的。
这个是我是当前的看法,以后可能有新的看法,现在像Embedded Studio,CCS等都已经支持了CLANG方案。 morning_enr6U 发表于 2023-9-11 13:20
这个要怎么注意,是不是有问题,换成MDK5就好?
有问题的话,只能串口,RTT等调试手段了。 eric2013 发表于 2023-9-11 21:00
AC6编译DSP浮点以外的程序没有优势。实际上切换到AC6很大程度上是想更好的执行后续新的内核芯片以及更好 ...
我测试过,执行速度它确实比其它版本快 Edmund1964 发表于 2023-9-11 22:35
我测试过,执行速度它确实比其它版本快
【性能测评】DSP库,MDK5的AC5,AC6,IAR和Embedded Studio的三角函数性能(2022-06-04更新)
https://www.armbbs.cn/forum.php?mod=viewthread&tid=95455&fromuid=58
(出处: 硬汉嵌入式论坛)
页:
[1]