以MediaServer为例,本地架构为amd64(x86-64),NAS架构为arm64
由于本地有源代码却运行不了程序,而NAS服务器上可以运行却没有源代码,调试需要通过gdb命令行的方式,很不友好,所以研究了一下 选择用gdbserver的方式进行本地调试
gdbserver安装
默认情况下可以直接用apt install gdbserver安装,但是arm64架构并没有对应的gdbserver,
所以需要去gdb官方deb下载,gdb 版本和gdbserver版本不一致可能有问题,但是目前还没遇到
# 下载deb
wget http://deb.debian.org/debian/pool/main/g/gdb/gdbserver_10.1-1.7_arm64.deb
# 解压deb
dpkg -x gdbserver_10.1-1.7_arm64.deb ~/gdbserver-arm64
# 将解压后的gdbserver传输到NAS服务器上
scp gdbserver ugreen@172.17.90.211:/home/
本地gdb安装
由于我本地电脑是amd64(x86-64),需要额外安装arm架构的gdb
sudo apt install gdb-multiarch
实际运行
NAS服务器
# 使用gdbserver监视运行media_serv
./gdbserver :2345 media_serv
执行命令后,会卡住进程,并没有真正运行,直到一个gdb连接指向这个端口才会真正运行
本地运行
用于连接本地和远程端口(前面的2345对应本地的端口,后面的2345对应服务器的端口)
# ssh连接本地和远程端口
ssh -L 2345:localhost:2345 ugreen@172.17.90.211
本地vscode执行
修改launch.json,重点关注program和miDebuggerPath字段,amd和arm切换时需要修改
{
"version": "0.2.0",
"configurations": [
{
"name": "Remote Debug MediaServer",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/output/arm64/bin/media_serv", // 本地符号文件
"args": ["--appmode", "console"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
// "miDebuggerPath": "gdb",
"miDebuggerPath": "gdb-multiarch",
"miDebuggerServerAddress": "localhost:2345",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"sourceFileMap": {
"/home/user/code/mediaserver": "${workspaceFolder}",
"/workspace": "${workspaceFolder}"
},
"logging": {
"moduleLoad": false,
"engineLogging": false
}
}
]
}
然后就可以点击运行与调试进行Debug

1496

被折叠的 条评论
为什么被折叠?



