在 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
在运行菜单中选择 附加 至 当地 过程...
并键入 自动飞行器
或其他要调试的载具名称。
现在,你可以在代码中设置断点,开始调试!