[Debug] Vscode 遠(yuǎn)程調(diào)試配置

使用Vscode進(jìn)行遠(yuǎn)程程序調(diào)試的配置

1. 需求

Host:交叉編譯環(huán)境,可編譯目標(biāo)target上運(yùn)行的程序或者庫文件
Target:實(shí)際程序運(yùn)行平臺(tái),運(yùn)行Host交叉編譯后的程序

2. 準(zhǔn)備

  • 交叉編譯好的可執(zhí)行程序和(或)庫文件,記可執(zhí)行程序在Host和Target上的路徑分別為 Host_exe_path, Target_exe_path
  • 配置Vscode

2.1 Vscode 配置

在Host上,打開Debug配置文件,一般為 工程根目錄下的 launch.json,添加配置項(xiàng)如下:

...

{
            "name": "remote:exe_name",
            "type": "cppdbg",
            "request": "launch",           
            // 1. program 配置可執(zhí)行程序在主機(jī)上的路徑 Host_exe_path
            "program": "${workspaceFolder}/build/test_exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            // 2. Host 上找到交叉編譯工具聯(lián)中的 gdb 路徑
            "miDebuggerPath": "/opt/gcc-arm-9.2-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gdb",
            // 3. Target 的IP地址以及 gdb server監(jiān)聽端口,2233是舉例說明,可以是尚未使用的任意值,保證Host配置和Target上統(tǒng)一即可
            "miDebuggerServerAddress": "192.168.10.1:2233",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        },

...

3. 調(diào)試

  1. 在Target上,進(jìn)入到可執(zhí)行程序目錄,運(yùn)行 gdbserver :2233 ./test_exe [args]
    此處的端口號(hào)2233與Host 上Vscode上配置一致即可;此時(shí)會(huì)發(fā)現(xiàn)此程序會(huì)阻塞在監(jiān)聽端口接口,等待Host debug的連接
  2. 在Host上,在Vscode界面,開啟Debug,一般使能配置后,按F5即可
  3. 此時(shí)就可以在Target上看到程序運(yùn)行起來了

4. 其他無關(guān)配置

4.1 關(guān)于Eigen庫在Vscode調(diào)試時(shí),無法直接顯示其內(nèi)容的解決辦法。

  1. 下載 https://github.com/libigl/eigen/blob/master/debug/gdb/printers.py 文件,將此文件放置在任一路徑,如 ~/.gdbExtensions,則文件全路徑為 ~/.gdbExtensions/printers.py
  2. 更新默認(rèn)gdb配置,在文件 ~/.gdbinit 中(若無,則新建),添加一下代碼
python 
import sys 
sys.path.insert(0, '~/.gdbExtensions') 
from printers import register_eigen_printers 
register_eigen_printers (None) 
end
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容