使用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)試
- 在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的連接 - 在Host上,在Vscode界面,開啟Debug,一般使能配置后,按F5即可
- 此時(shí)就可以在Target上看到程序運(yùn)行起來了
4. 其他無關(guān)配置
4.1 關(guān)于Eigen庫在Vscode調(diào)試時(shí),無法直接顯示其內(nèi)容的解決辦法。
- 下載 https://github.com/libigl/eigen/blob/master/debug/gdb/printers.py 文件,將此文件放置在任一路徑,如 ~/.gdbExtensions,則文件全路徑為 ~/.gdbExtensions/printers.py
- 更新默認(rèn)gdb配置,在文件 ~/.gdbinit 中(若無,則新建),添加一下代碼
python
import sys
sys.path.insert(0, '~/.gdbExtensions')
from printers import register_eigen_printers
register_eigen_printers (None)
end