前言
Vscode 作为轻量化的调试工具深受广大开发者的青睐,虽然大家都用它来看新闻逛论坛炒股,但是用它开发算法确实方便。
Apollo作为成熟的自动驾驶系统被广泛使用,但是关于它调试代码的方法却介绍很少,相信大家也一定希望可以在apollo代码中打断点,来看程序执行过程中的变量以及逻辑,本文将介绍如何使用Vscode打断点调试apollo。
如果对自动驾驶规划、控制、apollo算法细节、感知融合算法感兴趣,可以关注我的专栏:
Apollo决策规划模块代码详解
最新文章推荐:
LQR算法进行轨迹跟踪,lqr_speed_steering_control( )的python实现
Apollo Planning决策规划代码详细解析 (1):Scenario选择
prescan联合simulink进行FCW的仿真_自动驾驶 Player的博客-CSDN博客
调试方法如下:
1、Vscoed中安装对应插件,需要安装Remote-Containers Docker 两个插件:
2、下载Apollo工程并执行脚本构建apollo镜像
bash docker/scripts/dev_start.sh
第一次构建镜像比较耗时,可以切换国内源加速,看到OK 说明镜像拉取成功。
3、第一次使用Vscode 连接apollo docker时,可能要先在命令行进入docker
bash docker/scripts/dev_into.sh
出现类似下面字样说明已经进入docker
4、此时可以使用Vscode的 Remote-Containers 插件来连接docker
右键需要进入的容器,选择attach to cotainers 进入容器
当左下角出现对应容器的名称,并且终端显示apollo docker的路径,则说明连接成功:
5、接下来这步最关键,需要build可调试版本的软件,以apollo 5.5 举例,指令如下:
bash apollo.sh build_cpu --jobs=1 --ram_utilization_factor 60
6、在当前容器中安装debug需要的插件,可以使用配置文件来安装:
{
"extensions": [
"ms-vscode.cmake-tools",
"ms-vscode.cpptools",
],
"workspaceFolder": "/apollo",
"remoteUser": "xxx",
"remoteEnv": {
"HISTFILE": "/apollo/.dev_bash_hist"
}
}
7、接下来一步也很重要,根据需求来写vscode的launch.json;以单元测试来距离,写法如下,可以根据不同需求来替换program
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
// "program": "/apollo/bazel-bin/modules/planning/scenarios/lane_follow/lane_follow_scenario_test",
// "program": "/apollo/bazel-bin/modules/control/control_component_test",
"program": "/apollo/bazel-bin/modules/control/control_component_lib",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
8、接下来在对应cpp文件中打断点,就可以使用Vscode 的debug功能了