VSCode 为调试禁用 Arduino 编译优化
VSCode disabling Arduino compilation optimizations for debugging
使用默认的 VSCode Arduino 配置,编译器将生成的代码优化为完全优化,因此使用 Cortex-Debug 进行调试几乎是不可能的,因为代码已被优化并且步进到处跳转。
关于如何禁用所有编译器优化的任何指示?
不知道你用的是什么开发板,我用的是Adafruit M0 Express。 Adafruit 为我认为是他们的大多数 SAMD 开发板创建了开发板配置选项。如果您编辑 boards.txt 文件。下图是 VSCode Arduino for a Feather M0 Express 的标准板选择器,请注意附加调试选项。 Adafruit 在其 M4 板上实施了更广泛的优化选择。从那里的例子建模,你可以分别切换调试和优化。
单击 here 查看 VSCode
中的示例
我的 Adafruit 开发板可以在这里找到:
C:\Users\GregTerrell\AppData\Local\Arduino15\packages\adafruit\hardware\samd.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 中更新您的电路板将覆盖您的更改。
使用默认的 VSCode Arduino 配置,编译器将生成的代码优化为完全优化,因此使用 Cortex-Debug 进行调试几乎是不可能的,因为代码已被优化并且步进到处跳转。
关于如何禁用所有编译器优化的任何指示?
不知道你用的是什么开发板,我用的是Adafruit M0 Express。 Adafruit 为我认为是他们的大多数 SAMD 开发板创建了开发板配置选项。如果您编辑 boards.txt 文件。下图是 VSCode Arduino for a Feather M0 Express 的标准板选择器,请注意附加调试选项。 Adafruit 在其 M4 板上实施了更广泛的优化选择。从那里的例子建模,你可以分别切换调试和优化。
单击 here 查看 VSCode
中的示例我的 Adafruit 开发板可以在这里找到: C:\Users\GregTerrell\AppData\Local\Arduino15\packages\adafruit\hardware\samd.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 中更新您的电路板将覆盖您的更改。