VSCode禁用Arduino编译优化进行调试



使用默认的VSCode Arduino配置,编译器会将生成的代码优化为完全优化,因此使用Cortex Debug进行调试几乎是不可能的,因为代码已经优化,并且到处都是跨步跳。

有关于如何禁用所有编译器优化的指针吗?

我不知道你用的是什么开发板,我用的是Adafruit M0 Express。Adafruit为我认为是他们的大多数SAMD板创建了板配置选项。如果编辑boards.txt文件。下图是Feather M0 Express的VSCode Arduino的标准板选择器,请注意额外的调试选项。Adafruit在其M4板上实现了更广泛的优化选择。从该示例建模,您可以分别切换调试和优化。

单击此处查看VSCode 中的示例

我的Adafruit板在这里找到:C: \Users\GregTerrell\AppData\Local\Arduino15\packages\adafruit\hardware\samd\1.5.11

的boards.txt默认值.menu.debug.on.build.flags.debug=-g

将其更改为.menu.debug.on.build.flags.debug=-g -O0

如果您查看构建详细信息,编译器命令行将有-O,稍后您应该会找到"-g-O0"。GCC文档指出,如果遇到一个标志的多次出现,则将使用编译器标志的最后版本进行构建。

注:

  1. 您必须重新启动VSCode才能使更改生效
  2. 备份或记录如何更改boards.txt文件。从Arduino IDE中更新您的板将覆盖您的更改

最新更新