vscode/gdb/gdbserver调试
一、直接使用GDB调试程序
①嵌入式性能、内存充足的情况下
下载任意版本gdb,交叉编译后,拷贝到嵌入式目标板直接运行gdb
②嵌入式性能、内存不足的情况下,使用gdbserver
下载任意版本gdb,交叉编译后,将gdbserver拷贝到嵌入式目标板
在嵌入式目标板 (ip 192.168.1.2)
运行如下命令
$ gdbserver 192.168.1.1:port bin_file
在PC调试环境 (ip 192.168.1.1)
运行如下命令,其中arm-gdb 是你的交叉编译工具链目录下的一个gdb工具,这里的arm-gdb不是下载的gdb交叉编译后的程序,下载的gdb交叉编译后只能在目标嵌入式板运行,交叉编译工具链目录下的gdb在PC调试环境运行。如arm-linux-gnueabihf-gdb
。
** 注意运行程序只能用c,不能用r **
$ arm-gdb bin_file
(gdb) target remote 192.168.1.2:port
... (设置断点等gdb用法)
(gdb) c
二、调试coredump
①嵌入式性能、内存充足的情况下
下载任意版本gdb,交叉编译后,拷贝到嵌入式目标板直接运行
gdb bin_file core_file
(gdb) bt
②嵌入式性能、内存不足的情况下
在PC调试环境运行如下命令
arm-gdb bin_file core_file
(gdb) bt
三、交叉编译gdb
四、通过vscode-gdbserver调试
gdbserver部分如上配置
vscode配置(ubuntu环境):
1、安装“Remote Development”插件
点击“调试” ->“添加配置”,然后选择“C++(GDB/LLDB)”选项,此时会创建“launch.json”文件
2、配置launch.json文件
①、 name:调试的项目名
②、 program:需要调试的应用程序可执行文件路径。
③、 cwd:需要调试的应用程序源码路径。
④、 miDebuggerPath:此项需要手动添加,用于指定所使用的交叉编译器 gdb 路径。
⑤、 miDebuggerServerAddress:此项需要手动添加,远程 gdbserver 服务器地址。
1 {
......
5 "version": "0.2.0",
6 "configurations": [
7 {
8 "name": "gdbtest",
9 "type": "cppdbg",
10 "request": "launch",
11 "program": "${workspaceFolder}/gdbtest",
12 "args": [],
13 "stopAtEntry": false,
14 "cwd": "${workspaceFolder}",
......
25 "miDebuggerPath":
"/home/zuozhongkai/linux/IMX6ULL/tool/gdb/bin/arm-linux-gnueabihf-gdb",
26 "miDebuggerServerAddress": "192.168.1.251:2001"
27
28 }
29 ]
30 }
3、开始调试
点击 VSCode 上的“调试” ->“启动调试”按钮