0 前言
鉴于以下的痛点,尝试了一下gdbserver配合vscode,发现十分好用。
- 应用程序比较大,依赖的库也很多,设备上没有足够的存储空间。
- 设备没有预留显示接口。
- 在终端里面放断点调试效率低。
我这里使用的client是i386架构,server是aarch64。
网上有很多教程都是同一架构的,直接参考会报错,踩了一些坑。。。
1 安装依赖
sudo apt-get install gdb gdb-multiarch -y
验证
server
gdbserver :端口号 应用程序
client
gdb
(gfb)target remote (server的IP):端口号
2 配置vscode
直接放launch.json
,这里面的配置官网的参考上都有。不赘述。
{
"version": "0.2.0",
"configurations": [
{
"name": "调试",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/应用程序的路径",
"args": [
],
"stopAtEntry": true,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"filterStderr": true,
"filterStdout": false,
"MIMode": "gdb",
"logging": {
"engineLogging": false,
"trace": false,
"traceResponse": false,
"programOutput": true,
"moduleLoad": true
},
"setupCommands": [
{
"description": "disable pipe",
"text": "handle SIGPIPE nostop",
"ignoreFailures": true
},
{
"description": "Set remote ARM architecture",
"text": "set architecture aarch64",
"ignoreFailures": false
}
],
"miDebuggerPath": "/usr/bin/gdb-multiarch",
"miDebuggerServerAddress": "(server的IP):端口号"
}
]
}
在workspaceFolder
目录下创建gdb配置文件.gdbinit
,这样就可以加载gdb的设置。.gdbinit
里面的设置也可以通过setupCommands
进行配置,效果是一样的。但是.gdbinit
在gdb中是通用的,换其他工具也可以使用,个人建议还是用.gdbinit
。
.gdbinit
中需要指明server的架构
set architecture aarch64
3 注意
架构不一样要使用gdb-multiarch
替代gdb
获取server的architecture
在server上运行gdb,然后使用’‘show architecture’'查看。
(gdb)show architecture
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)