简单几步搭建ARM gdb的调试环境

1.下载gdb源码

http://ftp.gnu.org/gnu/gdb/
下载稍微早点的版本,因为最新的版本在配置时可能需要版本更高的运行环境,可能会有一堆麻烦,所以建议下载旧点的版本号,我下载 gdb-7.8.1.tar.gz 我的PC环境是虚拟机Ubuntu 16.04

2.编译 arm-linux-gdb

在PC上用gdb调试一个a.out程序时,直接 gcc main.c -g 就可以编译出含有gdb调试信息的可执行文件 a.out
然后在调试的时候就用 gdb a.out 就可以进入gdb调试环境中

所以在使用交叉gdb时需要用交叉编译链编译出arm开发板上的执行文件,在PC机上运行能打开arm可执行文件的gdb工具,这就是 arm-linux-gdb
解压gdb源码编译gdb的工具:

tar xvf gdb-7.8.1.tar.gz
mkdir arm-gdb
./configure --target=arm-cortex_a9-linux-gnueabi  --prefix=/home/xxx/tools/gdb-7.8.1/arm-gdb/
make -j4
make install -j4

其中用到的几个参数如下:

--target 指定目标机交叉编译器前缀,比如--target=arm-cortex_a9-linux-gnueabi ,交叉编译链
--host   指定编译后的运行主机,默认就是 x86_64-linux,如果要运行在PC上就不指定,他会选择系统的编译工具,如果是运行在arm上就用交叉编译链
--prefix 指定要安装的目录

如果遇到下边的错误,应该是Ubuntu 没有安装txtinfo

WARNING: ‘makeinfo’ is missing on your system.

安装 txtinfo

sudo apt-get install texinfo

然后重新configure make 和make install

添加环境变量

vi ~./brashrc 
export PATH=$PATH:/home/xxx/tools/gdb-7.8.1/arm-gdb/bin

执行如下就说明安装成功

arm-cortex_a9-linux-gnueabi-gdb -v
GNU gdb (crosstool-NG linaro-1.13.1-4.8-2013.11 - nexell) 7.6.2
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "--host=x86_64-build_unknown-linux-gnu --target=arm-cortex_a9-linux-gnueabi".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.

3.编译gdbserver

cd gdb/gdbserver
./configure  --target=arm-cortex_a9-linux-gnueabi --host=arm-cortex_a9-linux-gnueabi
make CC=arm-cortex_a9-linux-gnueabi -j4

就会在当前路径下生成 gdbserver,然后将gdbserver拷贝到arm开发板的/usr/bin/下

4.使用

得到上边两个必须的工具后,就看怎么使用

因为交叉编译的gdb基于网络通信来完成gdb调试,所以就需要分别在ARm端和PC端运行各自的工具来保持通信

首先在PC端编译出ARM端使用的可执行二进制文件
arm-cortex_a9-linux-gnueabi-gcc main.c -g
然后把 a.out拷贝到ARM端

在ARM端执行:

# gdbserver 192.168.9.101:1234 a.out //ARM的IP地址:自定义的一个端口

在PC端执行:

arm-cortex_a9-linux-gnueabi-gdb a.out

在PC端的gdb中连接ARM的gdbserver

(gdb) target remote 192.168.9.101:1234 

你会看到ARM端出现

Remote debugging from host 192.168.9.68

这就说明gdb连接已经建立现在就可以使用gdb调试了

  • 5
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
针对 ARM 架构的调试,你可以使用以下三个版本的 GDBGDB 6.7、GDB 7.6 和 GDB 8.1 。GDB 是一款 UNIX 及 UNIX-like 下的调试工具,它主要提供了以下四个功能: 1. 启动程序:你可以按照自定义的要求来运行程序。 2. 运行程序:你可以单步执行程序,观察每一步的状态变化。 3. 检查程序状态:你可以查看程序的变量值、寄存器状态等信息。 4. 修改程序状态:你可以修改程序的变量值、寄存器状态等信息。 对于 ARM 架构的调试,你需要在 Linux 服务器上搭建 GDB 服务器。你可以使用以下配置来启动 GDB 服务器: ``` miDebuggerServerAddress: "192.168.225.1:9001" ``` 这里的 IP 地址和端口号是目标板上 GDB 服务器监听的地址和端口号 。另外,在 Visual Studio Code 中也可以配置 GDB 调试。你可以在配置文件中设置以下属性: ``` "configurations": [ { "name": "(gdb) 启动", "type": "cppdbg", "request": "launch", "program": "/home/user/vscode_gdb/arm_test", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "setupCommands": [ { "description": "为 gdb 启用整齐打印", "text": "-enable-pretty-printing", "ignoreFailures": true } ], "miDebuggerPath": "/opt/***/arm-oe-linux-gnueabi-gdb" } ] ``` 在以上配置中,你需要指定要调试的程序的完整路径、工作目录和适合目标板的 GDB 路径 。同时,你可以设置其他的调试选项,例如调试环境变量、启用整齐打印等。 总结起来,你可以使用 ARM 架构的 GDB 版本进行调试,可以在 Linux 服务器上搭建 GDB 服务器,也可以在 Visual Studio Code 中配置 GDB 调试选项来进行 ARM 架构的调试

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值