0 GDB Server是什么?
GDB Server 是一个允许你在一个设备(称为“目标机”)上运行和调试另一个设备(称为“主机”)上的程序的“桥梁”程序。
1 配置GDB Server
1.1 在SDK/编译工具文件夹里找到用于开发板的gdbserver和用于linux_x86平台的gdb调试应用
本例gdbserver所在路径为/opt/atk-dlmp135-toolchain/arm-buildroot-linux-gnueabihf/debug-root/usr/bin,使用file命令查看可知其能在开发板上运行:

本例linux_x86平台gdb调试应用所在路径为/opt/atk-dlmp135-toolchain/usr/bin/arm-buildroot-linux-gnueabihf-gdb,使用file命令查看可知其能在linux_x86平台上运行:

将gdbserver放到开发板上。
1.2 编辑launch.json文件
(1)点击如下图标:

(2)创建一个新的launch.json文件,内容如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Remote Debug",
"type": "cppdbg",
"request": "launch",
"program": "/home/alientek/linux/c_code/cmake/auto_start/build/auto_start_test",
"args": [
"-g"],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"miDebuggerPath":"/opt/atk-dlmp135-toolchain/usr/bin/arm-buildroot-linux-gnueabihf-gdb",
"miDebuggerServerAddress": "192.168.1.117:2345"
}
]
}
其中需要修改的内容包括:
program:需要被调试的可执行文件名(在linux主机上的位置)
miDebuggerPath:用于linux_x86平台的gdb调试应用所在位置
miDebuggerServerAddress:开发板的IP和gdbserver使用的端口号
1.3 修改camke,生成支持调试的可执行文件
在cmake中添加如下两行即可:
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -O0 -g")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O0 -g")
然后编译生成可执行文件,就是前面步骤中program指示的可执行文件。
1.4 将生成的可执行文件复制到开发板上,使用gdbserver运行
命令如下:
./gdbserver :2345 ../auto_start_test
2345即前文中miDebuggerServerAddress配置的端口号,可以根据实际情况更改为其它的。

2 使用GDB Server进行调试
添加断点:

在vscode依次点击如下图标:

此时程序停在断点位置:

点击顶部图标可以实现继续运行、逐过程、单步调试、单步跳出、重启、停止功能:

如下是单步执行,可以看到每步执行过程:


274

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



