GDB 简介
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。
GDB 移植
方法1:
若ubuntu装了交叉编译器(正常来说肯定是装了的),那么就已经集成了自带gdb,只需要将gdbserver拷贝到开发板文件系统指定目录/bin/

测试gdb相关信息

方法2:
这个比较麻烦,需要官方网站获取 gdb 和 gdbserver 源码,路径地址:Download GDB (sourceware.org)
解压编译步骤:
tar -vxzf gdb-9.1.tar.gz //解压后生成gdb-9.1
cd gdb-9.1
mkdir build //需在gdb下新建 build 目录
cd build
../configure --target=arm-linux-gnueabihf --prefix=/home/l17/tool/gdb
make //编译
make install //安装
可能会出现问题:
gdb-9.1/missing: makeinfo: not found
...
Makefile:490: recipe for target 'gdb.info' failed
make[4]: *** [gdb.info] Error 127
...
Makefile:2006: recipe for target 'subdir_do' failed
make[3]: *** [subdir_do] Error 1
...
Makefile:851: recipe for target 'all' failed
make: *** [all] Error 2
解决办法:
sudo apt install texinfo
交叉编译gdbserver,执行完下面命令后会生成 gdbserver,将gdbserver拷贝到开发板文件系统指定目录/bin/ (建议方法1)
cd gdb-9.1/gdb/gdbserver //进入到 gdbserver 目录
./configure --target=arm-linux-gnueabihf --host=arm-linux-gnueabihf
make CC=arm-linux-gnueabihf-gcc //交叉编译 gdbserver
添加环境变量
配置完成后,需要进入ubuntu的/etc/profile修改环境变量
方法1:因为安装了工具链,通常不需要做任何修改
export PATH=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin:$PATH
方法2:确定当前
export PATH=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin:/home/
l17/tool/gdb/bin:$PATH
调试测试
写个简单的应用
#include <stdio.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
unsigned int timerCnt = 0;
while(1)
{
printf("system runing times:%d\r\n", timerCnt);
timerCnt++;
sleep(1);
}
}
arm-linux-gnueabihf-gcc gdbApp.c -o gdbApp -g
cp gdbApp /home/l17/nfs/rootfs/
- 启动开发板,执行gdb服务命令(输入调试主机,也就ubuntu ip地址)
gdbserver 192.168.0.67:2001 gdbApp //启动开发板上的 gdbserver

arm-linux-gnueabihf-gdb gdbApp
- gdb窗口输入如下命令,连接调试设备(需知调试设备ip地址)
target remote 192.168.0.50:2001

使用gdb相关命令执行调试工作(具体可以百度)
- l 命令,擦寻源码
- b命令,设置调试断点
- c命令,执行下一个断点
- q命令,退出调试
基于VSCode 界面调试
- 新建文件夹: .vscode,新建文件:launch.json

- 运行->添加配置 选择:c/c++:(gdb)启动,会自动生成配置信息(若需要知道红色字体具体描述啥意思,鼠标指向它会有提示信息,vscode yyds)


{
"configurations": [
{
"name": "gdbApp",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/gdbApp",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath":
"/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gdb",
"miDebuggerServerAddress": "192.168.0.50:2001"
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
}
]
}
运行调试
- 启动开发板,执行gdb服务命令(输入调试主机,也就ubuntu ip地址)
gdbserver 192.168.0.67:2001 gdbApp //启动开发板上的 gdbserver
这下可以像 keil iar ccs vs 等等ide工具一样使用
 参考:正点原子驱动开发指南等文档
|