Skip to content

使用 GDB 进行调试

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

信息流看起来像这样:

sh
开发者 <=> GDB <=> GDB 服务器 <=> 调试探针 <=> SWD <=> PX4 自动驾驶仪。

快速入门

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

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

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

我们建议将 J-Link 与 Pixhawk 调试适配器配合使用,或者将 STLinkv3-MINIE 与焊接好的定制线缆配合使用。

连接好之后,您可以使用常见的 GDB 命令,例如:

  • continue:继续程序执行
  • run:从头开始运行
  • backtrace:查看调用栈
  • break somewhere.cpp:123:设置断点
  • delete somewhere.cpp:123:再次删除该断点
  • info locals:打印局部变量
  • info registers:打印寄存器信息

更多详细信息请查阅 GDB 文档

TIP

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

Gazebo 依赖项

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

以下主题介绍了如何开始进行目标板上的调试:

嵌入式调试工具

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

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

emdbg 库包含 许多有用的 GDB 插件,这些插件使调试 PX4 更加容易。 它还提供了用于 实时分析 PX4 的工具。