開發者說丨使用 Vscode-insiders 的docker擴展 調試Apollo項目

本文做者:Apollo開發者社區javascript

在Apollo開發者社區中,常常被問及的一個問題是:用什麼IDE工具進行開發?java

 

Apollo開發者社區榮譽佈道師—賀博士曾經寫過一篇博客使用Vscode編譯調試Apollo項目,介紹瞭如何用Vscode結合Gdb進行調試,爲開發者提供了調試方法。docker

 

社區優秀開發者—楊鴻城近期發現一種更爲簡便的方式能夠用Vscode-insiders進行Apollo項目調試,操做體驗很是接近IDE,故寫一篇教程分享給你們,但願能給廣大開發者帶來必定的幫助。json

 

 

  如下,ENJOY  bootstrap

 

1、Vscode-insiders簡介

 

VsCode是微軟第一款支持Linux的輕量級代碼編輯器,其功能介於編輯器與IDE之間,但更傾向於一個編輯器。Vscode有兩個版本,藍色的Vscode是很是穩定的發行版本,Vscode-insiders,至關於Bate版本,測試版,會有一些新的功能。bash

 

本文使用Vscode-insiders 的Docker 和Remote - Containers 擴展,能夠便捷地調試Apollo項目,而藍色的Vscode不具有該調試功能。編輯器

 

2、安裝Vscode-insiders及擴展

 

安裝Vscode-insiders

 

Vscode-insiders有兩種安裝方式,分別是Apt安裝Deb包安裝。Vscode-insiders 和藍色的Vscode 能夠同時使用,安裝Vscode-insiders 無需卸載藍色的Vscode。ide

 

Apt方式安裝:工具

 

1sudo apt-get update
2sudo apt-get install code-insiders

 

Deb方式安裝:post

 

在 https://code.visualstudio.com/insiders/ 下載 Vscode-insiders 的Deb包,

 

1sudo dpkg -i code-insiders_xxx.deb

 

安裝 Docker 和 Remote-Containers 擴展

 

運行Vscode-insiders,在擴展欄中搜索 Docker 和 Remote - Containers 擴展並安裝。


在 https://code.visualstudio.com/docs/remote/containers 中可查看Docker擴展的詳細教程。

 

▲Docker安裝

 

▲Remote - Containers安裝

 

因爲Apollo項目是用C++進行開發,因此還需安裝C++擴展

 

▲C++擴展

 

安裝完畢後如圖所示:

 

▲Docker 和 Remote - Containers 安裝圖示

 

3、配置Vscode-insiders

 

啓動Apollo Docker

 

關於如何構建 Apollo3.5或5.0 已在Ubuntu14.04搭建GPU版本的百度Apollo3.5自動駕駛平臺詳細介紹。 

 

1cd apollo
2bash docker/scripts/dev_start.sh 
3bash docker/scripts/dev_into.sh 
4bash scripts/bootstrap.sh

 

在Vscode-insiders中配置Apollo

 

Apollo Docker 啓動後,打開Vscode-insiders,選中Docker圖標,出現Apollo鏡像,如圖所示:

 

▲啓動Vscode-insiders

 

右鍵選中Apolloauto/apollo:dev-x86_64-xxx 鏡像,選中Attach visual studio code(藍色的Vscode即便安裝了Docker擴展也沒有此選項)

 

▲選中Attach visual studio code

 

此時Vscode會自動打開一個新窗口加載Container,若左下角出現 Attached container 字樣,則表示 Vscode 已加載完成。

 

▲Vscode 加載完成

 

而後選擇 【打開文件夾】,鍵入 /apollo/ 後肯定

 

▲鍵入 /apollo/ 

 

此時Vscode-insiders 已經加載 Apollo 鏡像中的/apollo 文件夾,接着打開擴展欄,在Docker中安裝C++ 擴展(部分電腦會自動安裝),安裝後點擊【從新加載】。

 

▲在Docker中安裝C++ 擴展

 

加載完成後即配置好環境

 

▲加載完成

 

4、調試Apollo模塊和單元測試程序

 

調試Apollo單元測試程序

 

完成環境配置後,選擇【調試】-【打開配置】,自動打開 /Apollo/.vscode/launch.json 配置文件:

 

根據本身的須要,修改 Program 和 Args 參數,便可調試Apollo單元測試程序,如下給出一個例子:

 

1{
 2    "version": "0.2.0",
 3    "configurations": [
 4
 5        {
 6            "name": "(gdb) Launch",
 7            "type": "cppdbg",
 8            "request": "launch",
 9            "program": "/apollo/bazel-bin/modules/perception/camera/test/camera_lib_lane_postprocessor_denseline_lane_postprocessor_test",
10            "args": [],
11            "stopAtEntry": false,
12            "cwd": "${workspaceFolder}",
13            "environment": [],
14            "externalConsole": false,
15            "MIMode": "gdb",
16            "setupCommands": [
17                {
18                    "description": "Enable pretty-printing for gdb",
19                    "text": "-enable-pretty-printing",
20                    "ignoreFailures": true
21                }
22            ]
23        }
24    ]
25}

 

打開對應的測試代碼文件,加入斷點,選擇【調試】-【啓動調試】,便可像其餘IDE進行方便的代碼調試。

 

  • F10:單步調試

  • F11:單步跳入

  • Shift+F11:單步跳出

 

左側可直觀地看到堆棧和變量信息:

 

▲堆棧和變量信息

 

修改代碼後在Docker中運行Build,完成編譯後便可再次啓動調試。

 

調試Apollo模塊

 

Apollo開發者社區公衆號曾發過的《開發者說 | Apollo 3.5各功能模塊啓動過程解析》詳細地介紹了Apollo3.5 的模塊啓動過程。

 

經過在 /apollo/cyber/mainboard/mainboard.cc 加入斷點,能夠詳細地看到模塊的啓動過程(如何加載Dag和Conf文件進行初始化),極大地方便了開發者理解和調試Apollo模塊。

 

PS: Apollo3.0及之前的版本仍然可用此種方式調試,只需把 Program 改爲Ros可執行程序路徑,以及 Args改爲對應的參數。

 
1{
 2    "version": "0.2.0",
 3    "configurations": [
 4
 5        {
 6            "name": "(gdb) Launch",
 7            "type": "cppdbg",
 8            "request": "launch",
 9            "program": "/apollo/bazel-bin/cyber/mainboard",
10            "args": ["-d","/apollo/modules/drivers/gnss/dag/gnss.dag"],
11            "stopAtEntry": false,
12            "cwd": "${workspaceFolder}",
13            "environment": [],
14            "externalConsole": false,
15            "MIMode": "gdb",
16            "setupCommands": [
17                {
18                    "description": "Enable pretty-printing for gdb",
19                    "text": "-enable-pretty-printing",
20                    "ignoreFailures": true
21                }
22            ]
23        }
24    ]
25}
 

▲調試Apollo板塊

 

本文部份內容參考連接

 

*《Vscode-insiders 的 docker擴展》

https://code.visualstudio.com/docs/remote/containers

*《使用Visual Studio Code編譯、調試Apollo項目》

https://blog.csdn.net/davidhopper/article/details/79819587

*《使用GDB調試Apollo項目》

https://blog.csdn.net/davidhopper/article/details/83445976

*《使用GDB調試Apollo單元測試程序》

https://blog.csdn.net/davidhopper/article/details/82589722

*《Apollo 3.5 各功能模塊的啓動過程解析》

https://blog.csdn.net/davidhopper/article/details/85248799

原文連接地址:https://developer.baidu.com/topic/show/290443

相關文章
相關標籤/搜索