1. 程式人生 > 其它 >使用 VSCode 遠端 圖形化 GDB 除錯 嵌入式linux

使用 VSCode 遠端 圖形化 GDB 除錯 嵌入式linux

目錄標題

引言

之前說了,通過core dump找程式bug,但是有些時候排查問題的還是不夠高效,命令列形式gdb還是太簡陋了,在IDE debug程式碼打斷點,查堆疊變數那些習以為常的東西,在gdb這裡怎麼用怎麼不習慣,視覺化操作不比敲命令列來的香嗎?

最近正好研究了下vscode remote ssh + gdbserver 除錯。相對來說體驗比較像IDE了,基本的單步直接程式碼上打斷點,條件斷點變數監控堆疊顯示那些已經算湊活了。

環境

我目前的環境主要包括三部分:

  • 日常使用的windows
  • 從同事那邊拷過來的VM Linux虛擬機器開發環境,純做編譯。
  • 目標嵌入式linux裝置

目前基本工作流程是,在windows上通過vscode remote ssh 套件訪問虛擬機器做程式碼開發及編譯工作,再nfs之類的工具將程式碼拷到目標嵌入式裝置上執行。
工作基本都在windows上,虛擬機器開機了就用不管了。

步驟

vscode remote ssh 配置


安裝如圖外掛。

側邊欄會多出一個遠端資源管理器。新增你要連線的ssh 地址就好了。
配置檔案 裡面會加上你新增的地址。

Host 1.1.1.1
	HostName 1.1.1.1
	User     username # 填寫登陸遠端伺服器的使用者的名字,這個一行需要手動新增

Linux編譯機配置

我這邊由於是同事那邊考過來的現成環境,所以那些ssh,gdb都已經安裝好了,開箱即用。沒有的需要自行補上。

裝置板端配置

沒有gdbserver,先裝gdbserver。

通過以下命令,啟動gdbserver。

gdbserver localhost:9555 ./your_process_name

埠自己配,程式名字填自己程式的路徑名字。

vscode launch設定

上面,板端gdbserver啟動了,windows也能連線linux虛擬機器,但是虛擬機器的gdb還沒和gdbserver對應上。這部分的工作也是windows上用vscode launch.json檔案來配置。


側邊欄新增配置 。

        {
            "name": "(gdb) 啟動",
            "type": "cppdbg",
            "request": "launch",
            "program": "輸入程式名稱,例如 ${workspaceFolder}/a.out",  //改成自己的
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "/opt/hisi-linux/x86-arm/arm-himix200-linux/bin/arm-himix200-linux-gdb",   // 需要自行新增,gdb的路徑 
            "miDebuggerServerAddress": "1.2.3.4:9555",                                              //自行新增 gdbserver 的ip埠
            "setupCommands": [
                {
                    "description": "為 gdb 啟用整齊列印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },

需要修改新增的實際上就三個欄位
“program”
“miDebuggerPath”
“miDebuggerServerAddress”

除錯

vscode 連線 ssh,按F5即可開始除錯。
板端可以看到以下提示,說明已經愉快的進行除錯了。

Listening on port 9555
Remote debugging from host 1.1.1.1