跳至内容

使用 GDB 调试

GNU 调试器(GDB) 的形式与编译器工具链一起安装。 arm-none-eabi-gdb 二进制。调试器读取 ELF 文件中的调试符号,以了解 PX4 固件的静态和动态内存布局。要访问 PX4 自动驾驶仪微控制器,它需要连接一个 远程目标由一个 SWD 调试探针.

信息流是这样的

开发人员 <;=>; GDB <;=>; GDB 服务器 <;=>; 调试 探头 <;=>; SWD <;=>; PX4 自动驾驶仪

快速入门

要启动调试会话,通常需要

  1. 需要专门的 SWD 调试探针.
  2. 查找并连接到 SWD 调试端口.您可能需要 调试适配器.
  3. 配置并启动调试探针,创建 GDB 服务器。
  4. 启动 GDB 并作为远程目标连接到 GDB 服务器。
  5. 交互式调试固件

有关如何设置调试连接的详细信息,请参阅调试探针文档:

  • 世纪佳缘 J-Link:商用探头,无内置串行控制台,需要适配器。
  • 黑魔法探针GDB:集成 GDB 服务器和串行控制台,需要适配器。
  • STLink:性价比最高,集成串行控制台,适配器必须焊接。

我们建议使用带有 Pixhawk 调试适配器的 J-Link 或带有焊接定制电缆的 STLinkv3-MINIE。

连接后,您可以使用常用的 GDB 命令,如

  • 继续 继续执行程序
  • 运行 从头开始
  • 追溯 查看回溯
  • break somewhere.cpp:123 来设置断点
  • 删除某处.cpp:123 再次移除
  • 当地信息 打印本地变量
  • 信息登记 打印寄存器

咨询 GDB 文档 了解更多详情。

TIP

为了避免每次都在 GDB 中键入所有连接命令,可以将它们写入 ~/.gdbinit.

下一步工作

现在,您已将飞行控制器连接到 SWD 调试探针!

以下主题将介绍如何启动目标调试:

嵌入式调试工具

嵌入式调试工具 在用户友好的 Python 软件包中将多个软件和硬件调试工具连接在一起,从而更轻松地实现 ARM Cortex-M 微控制器和相关设备的高级用例。

该库可协调硬件调试和跟踪探头、调试器、逻辑分析仪和波形发生器的启动和配置,并提供分析工具、转换器和插件,以便在执行期间或之后深入了解软件和硬件状态。

emdbg 图书馆包含 许多有用的 GDB 插件 使调试 PX4 变得更容易。它还提供了以下工具 实时剖析 PX4.