Visual studio code VSCode禁用Arduino编译优化以进行调试

Visual studio code VSCode禁用Arduino编译优化以进行调试,visual-studio-code,arduino,compiler-optimization,Visual Studio Code,Arduino,Compiler Optimization,使用默认的VSCode Arduino配置,编译器会将生成的代码优化为完全优化的代码,因此使用Cortex Debug进行调试几乎是不可能的,因为代码会被优化,并且到处都会跳转 有没有关于如何禁用所有编译器优化的建议?我不知道您使用的是什么开发板,我使用的是Adafruit M0 Express。Adafruit为他们的大多数SAMD板创建了板配置选项。如果您编辑boards.txt文件。下图是Feather M0 Express的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

如果您查看构建详细信息,编译器命令行将有-Os,稍后您将找到“-g-O0”。GCC文档说明,如果遇到多次出现的标志,则编译器标志的最后版本将用于生成

注:

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