GDB Server使用方法(基于vscode的可视化调试)
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依次点击如下图标:

此时程序停在断点位置:

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

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

