使用Vscode进行远程程序调试的配置
1. 需求
Host:交叉编译环境,可编译目标target上运行的程序或者库文件
Target:实际程序运行平台,运行Host交叉编译后的程序
2. 准备
- 交叉编译好的可执行程序和(或)库文件,记可执行程序在Host和Target上的路径分别为 Host_exe_path, Target_exe_path
- 配置Vscode
2.1 Vscode 配置
在Host上,打开Debug配置文件,一般为 工程根目录下的 launch.json,添加配置项如下:
...
{
"name": "remote:exe_name",
"type": "cppdbg",
"request": "launch",
// 1. program 配置可执行程序在主机上的路径 Host_exe_path
"program": "${workspaceFolder}/build/test_exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
// 2. Host 上找到交叉编译工具联中的 gdb 路径
"miDebuggerPath": "/opt/gcc-arm-9.2-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gdb",
// 3. Target 的IP地址以及 gdb server监听端口,2233是举例说明,可以是尚未使用的任意值,保证Host配置和Target上统一即可
"miDebuggerServerAddress": "192.168.10.1:2233",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
...
3. 调试
- 在Target上,进入到可执行程序目录,运行
gdbserver :2233 ./test_exe [args]
此处的端口号2233与Host 上Vscode上配置一致即可;此时会发现此程序会阻塞在监听端口接口,等待Host debug的连接 - 在Host上,在Vscode界面,开启Debug,一般使能配置后,按F5即可
- 此时就可以在Target上看到程序运行起来了
4. 其他无关配置
4.1 关于Eigen库在Vscode调试时,无法直接显示其内容的解决办法。
- 下载 https://github.com/libigl/eigen/blob/master/debug/gdb/printers.py 文件,将此文件放置在任一路径,如 ~/.gdbExtensions,则文件全路径为 ~/.gdbExtensions/printers.py
- 更新默认gdb配置,在文件 ~/.gdbinit 中(若无,则新建),添加一下代码
python
import sys
sys.path.insert(0, '~/.gdbExtensions')
from printers import register_eigen_printers
register_eigen_printers (None)
end