使用 GDB 进行调试
GNU 调试器(GDB) 以 arm-none-eabi-gdb
二进制文件的形式随编译器工具链一同安装。 调试器读取 ELF 文件内的调试符号,以了解 PX4 固件的静态和动态内存布局。 为了访问 PX4 自动驾驶仪微控制器,它需要连接到一个 远程目标,该远程目标由 SWD 调试探针 提供。
信息流看起来像这样:
sh
开发者 <=> GDB <=> GDB 服务器 <=> 调试探针 <=> SWD <=> PX4 自动驾驶仪。
快速入门
要启动调试会话,您通常需要:
- 需要一个专用的 SWD 调试探针。
- 找到并连接到 SWD 调试端口。 您可能需要一个 调试适配器。
- 配置并启动调试探测来创建 GDB 服务。
- 启动 GDB 并作为远程目标连接到 GDB 服务。
- 以交互方式调试您的固件。
有关如何设置调试连接的详细信息,请参阅调试探针文档:
- SEGGER J-Link:商业探针,无内置串行控制台,需要适配器。
- 黑魔法探针(Black Magic Probe):集成了 GDB 服务器和串行控制台,需要适配器。
- STLink:性价比最高,集成了串行控制台,适配器必须焊接。
我们建议将 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 的工具。