如何在 Linux pc 上使用 gdb 调试 Arduino Uno?

电器工程 Arduino avr linux 调试
2022-01-24 10:30:01

如何在 Linux pc 上使用 gdb 调试(源代码单步)Arduino Uno?请注意,我不喜欢在 wine 或 VirtualBox 中使用 AVR Studio。

问题一:物理连接

我如何以及如何连接到 Uno 板?我的猜测是,由于 Uno 板上装有 ATmega328,单步源代码应该可用吗?我还想我可以在 ICSP 标头上使用AVR JTAGICE mkIIAVR Dragon ?

问题2: GDB服务器

然后我注意到有一些像AVaRICE这样的项目似乎提供了一个jtag到gdb功能,但可能还有其他项目?

问题3:精灵在哪里?

如果我启动并运行它,Arduino IDE 会在哪里隐藏生成的输出,如带有调试符号的 elf 文件(应该有一个)?还是我需要生成一个只使用 Ardino 库的经典 Makefile?

我试图找到一些关于什么/如何使用的信息,但我只找到了那些告诉我我能做什么的线索。有人可以将我推向正确的方向吗?

3个回答

在旧版本的 IDE(读取 < 1.0)中单击编译按钮时,您可以通过按住 shift 键来查找编译器工件。在较新的版本(阅读 >= 1.0)中,首选项对话框下有一个选项,用于在编译期间显示详细输出(参见屏幕截图)。使用详细输出,所有编译器输出最终所在的文件夹都会在控制台中打印(重复)。这至少应该让你开始。

截图 arduino 在编译期间显示详细输出

顺便说一句, 2012 年 6 月早些时候,在 Arduino 开发人员列表中,关于这个主题有各种各样的讨论,有人在 Arduino 开发人员列表中发布了关于 Arduino 的 GDB 调试的改进/集成方式的公告,但我还没有调查它更进一步。我猜这个项目叫做VisualMicro (?)。看起来它是作为 Visual Studio 插件构建的,因此在 linux 环境中可能对您没有帮助,而且它还处于测试阶段,但我会让您决定。

Simavr AVR 处理器模拟器现在为 AVR 固件调试提供了一个很好的 GDB 服务器,包括 Arduino。您可以单独使用它(需要您为特定的硬件配置编写一个小型控制台应用程序)或在Simutron GUI 环境中使用,您可以在其中通过原理图捕获定义硬件配置。

注意:使用这些工具,您没有物理连接,因为所有硬件都是模拟的。

这在类似问题中引用的 linux 期刊文章中得到了回答:Jtag debugging AVR

基本上,串联使用 avr-gdb 和 simulavr,您可以通过模拟器在选择的 AVR 微控制器上运行您的软件,同时使用 GDB 单步执行并观察执行代码。

希望这可以帮助!