在 linux 上使用 GDB 调试

本页介绍如何在 Linux 上设置 GDB 以调试 ArduPilot 与 SITL 之间的问题。

导言

本指南假定您已经按照说明在机器上成功使用了 SITL。 设置 SITL.

安装 GDB

要在 Linux 上安装 GDB,请使用软件包安装程序。如果你使用的是基于 debian 的系统(如 Ubuntu 或 Mint),只需使用 适切 安装 指挥部

苏都 适切 安装 gdb

设置 SITL

为了使用 GDB,您需要在 SITL 联编时配置调试符号。使用 :

./waf 配置 --排错

原始 GDB

这种方法使用命令行 gdb 进行调试。有 3 种可能的方法:

  • 从一开始就在 gdb 下运行 SITL。

gdb [gdb 选项] --参数 --SITL-固件(原则上  构建/坐标/箱柜) [SITL 选项]

示例下面将启动默认的 Copter SITL:

gdb --args $HOME/ardupilot/build/sitl/bin/arducopter -S -I0 -home -35.363261,149.165230,584,353 --model + --speedup 1 -defaults $HOME/ardupilot/Tools/autotest/default_params/copter.parm

如果需要,您还可以附加 MAVProxy

mavproxy.py -- tcp:127.0.0.0.1:5760 --坐标 127.0.0.0.1:5501 --向外 127.0.0.0.1:14550 --向外 127.0.0.0.1:14551 --游戏机 --地图
  • 使用 SITL 启动脚本运行 gdb sim_vehicle.py :只需添加 -D -G 直接在 gdb 中用调试符号构建和启动 SITL:

模拟载具.py -v ArduCopter -f 四人 --游戏机 --地图 -D -G

这里有一段使用视频:

  • 也可以附加到已经运行的 SITL 进程。您可以使用 pidf [载具 类型 : arducopter、 arduplane、 ardurover].

gdb --二进制(构建/坐标/箱柜/) SITL-处理-本我

启动 gdb 后,您就可以像调试其他程序一样调试 ArduPilot。如果不知道如何通过命令行使用 gdb,请上网查找一些教程,可以找到一个简单的教程 这里.别忘了,您可以在海丰国际机场安全地坠毁无人机!

使用 IDE

对于那些不习惯使用命令行的人来说,有很多方法可以使用 gdb 在图形用户界面上进行调试。下面是其中一些。

对于 Ubuntu 用户,默认保护将阻止您从集成开发环境将 gdb 连接到 SITL:请参阅 这里.这将导致错误信息 ptrace: 运行 准许 第一次尝试附加到本地进程时。

在这种情况下,请执行以下操作之一:

  • 要临时禁用此限制,请输入命令:

回响 0 | 苏都 发球 /采购/系统/内核//ptrace_scope
  • 要永久禁用此限制,请打开 /etc/sysctl.d/10-ptrace.conf 要立即应用更改,请输入上述命令。或者,运行 苏都 服务 procps 重新启动 或直接重启系统。

CLION

Jetbrains 网站 Clion 是付费产品,但对学生免费!

打开 ArduPilot 目录。使用启动脚本启动 SITL sim_vehicle.py :只需添加 -D 来构建和启动带有调试符号的 SITL:

模拟载具.py -v ArduCopter -f 四人 --游戏机 --地图 -D

在运行菜单中选择 附加 当地 过程...

./_images/Clion-attach1.png

并键入 自动飞行器 或其他要调试的载具名称。

../_images/Clion-attach2.png

现在,你可以在代码中设置断点,开始调试!

../_images/Clion-debug.png