Arm开发板编译部署gdb/gdbserver


1、选择gdbserver源码版本

首先打开工具包自带工具链目录,发现其中已经提供了已经编译好的gdb,经过测试可以用,所以只需要编译gdbserver即可,但是gdb需要和gdbserver版本进行匹配,否则会出问题。直接执行,查看工具链中gdb版本。这里版本为8.2.1 。前往下载地址:[添加链接描述](http://ftp.gnu.org/gnu/gdb/)这里我们下载的是gdb-8.2.1.tar.gz这个版本,下载完解压即可。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/fc3e32c44fc84fb08ce117dd0b436b1c.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARHJlQ29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

二、编译gdb

1.创建文件夹

进入gdb源码目录,使用 mkdir build命令创建build文件夹。
在这里插入图片描述

2、输入命令

../configure --target=arm-linux-gnueabihf --prefix=/home/xueya/GDBSouceCode/gdb/

生成Makefile文件,生成图如下。

说明

–target: 目标平台
–prefix:安装路径
在这里插入图片描述

3、编译

输入make
执行编译

4、安装

输入 make install 安装,执行完make install 会在安装路径下的bin文件夹下生成编译好的gdb文件。
但是编译过程中遇到报错

recipe for target ‘gdb.info’ failed

经过查阅资料,
主要有两种解决办法可用:

  1. 忽略错误
    主要方法为:
../configure --target=arm-linux-gnueabihf --prefix=/home/xueya/GDBSouceCode/gdb/   --disable-werror

--disable-werror
原因为:原因是比较新的编译器如gcc4.5 以上的编译器,对 #define bfd_set_cacheable(abfd,bool) (((abfd)->cacheable = bool), TRUE) 这样的语法不支持,解决方法是加上忽略告警的选项 。
编译过程中还会报错,但是在安装目录下不影响生成编译好的gdb文件。
2. 安装texinfo
查找资料,很多人都遇到这个问题,网上经验,安装
texinfo即可解决,本次编译采用这个方法。

sudo apt install texinfo

编译完成不会报错。

三、 编译gdbserver

1、进入路径

进入gdb源码目录,
输入

cd  /gdb/gdbserver

进入gdbserver源码目录。

2、输入命令

./configure --target=arm-linux-gnueabihf --host=arm-linux-gnueabihf 

3、编译

一开始,只指定了GCC

make CC=/root/work/build/Project/BMCBase2600/development/tools/arm-soft-linux-gnueabi/bin/arm-soft-linux-gnueabi-gcc

编译过程中,会遇到报错如下:
在这里插入图片描述
经过查找资料,在工具链下,查找/asm/unistd目录下已经对__NR_sigreturn进行定义,按照方法,对报错文件进行处理,具体为linux-arm-low.c
在文件开始位置添加

#ifndef __NR_sigreturn
#include <asm/unistd.h>
#endif

输入

make clean 

重新进行编译,发现还是同样错误。
再次经过查阅资料,发现是g++编译器的问题
再次修改命令,指定g++编译器,需要说明的是,该命令均需要输入绝对路径。

make CC=/root/work/build/Project/BMCBase2600/development/tools/arm-soft-linux-gnueabi/bin/arm-soft-linux-gnueabi-gcc  CXX=/root/work/build/Project/BMCBase2600/development/tools/arm-soft-linux-gnueabi/bin/arm-soft-linux-gnueabi-g++

再次 编译,顺利通过编译,在当前目录下会生成gdbserver这个文件。

4、安装

因为gdbserver需要发送到开发板,所以不需要安装。

四、部署gdbserver

通过SCP 将gdbserver发送到开发板,同时在ubuntu中编写测试程序,注意编译过程中需要加 -g参数

-g

编译成功后,将可执行文件也通过SCP发送到开发板。

测试编译好的gdbserver

执行

./gdbserver --version

在这里插入图片描述
有版本信息说明可用。

1、使用scp拷贝到开发板

1、window下可通过dos命令窗口,也可下载winscp软件,软件非常方便。
2、linux 下使用scp,将本地文件发送到开发板
SCP格式

scp 【常用参数 【-P 指定端口号】【-r 拷贝文件夹需要加】】 开发板的用户名@开发板的IP:开发板需要拷贝到的路径 

在使用scp中,遇到连接不上的问题,后来经过指导,发现是公司都是用的串口服务器,在连接开发板时,使用的IP和端口号都是串口服务器的IP,需要到开发板上,输入ifconfig命令查看开发板的ip,才可以。

2、开发板运行gdbserver

./gdbserver ubuntuIP:8989 gdbtest

端口号只要没用过的就可以,不要选择比较特殊的常用端口号。这里的ip为ubuntu的IP

3 、ubuntu 运行gdb

如gdb未添加到环境变量,则需要输入gdb所在路径,指定编译好的测试可执行程序

/home/gdb/arm-none-linux-gnueabi-gdb gdbtest

等待进入gdb调试界面,输入

target remote 开发板IP:8989

端口号需要一样

4、开始远端调试

设置断点在第9行,输入c则每次停在断点处
在这里插入图片描述
开发吧打印信息如下:
![(https://img-blog.csdnimg.cn/023c0b51711e480e98b74daa4a14b82d.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBARHJlQ29kZXI=,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)

在这里插入图片描述

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
编译 gdbgdbserver for arm-linux-gnueabihf 可以按照以下步骤进行: 1. 下载 gdb-9.2 源代码包,可以从官网 http://www.gnu.org/software/gdb/ 或者其他镜像站点下载,也可以使用 wget 命令从命令行下载: ``` wget https://ftp.gnu.org/gnu/gdb/gdb-9.2.tar.gz ``` 2. 解压源代码包: ``` tar -zxvf gdb-9.2.tar.gz ``` 3. 进入源代码目录: ``` cd gdb-9.2 ``` 4. 创建编译目录: ``` mkdir build-arm cd build-arm ``` 5. 运行 configure 脚本生成 Makefile: ``` ../configure --target=arm-linux-gnueabihf --host=x86_64-linux-gnu ``` 注意:需要根据所使用的交叉编译工具链修改 target 参数,例如 arm-linux-gnueabi、arm-linux-gnueabihf 等。 6. 编译: ``` make ``` 7. 安装 gdb: ``` sudo make install ``` 注意:需要将编译出的 gdb 文件复制到 ARM 开发上使用。 8. 进入 gdbserver 目录: ``` cd ../gdbserver ``` 9. 创建编译目录: ``` mkdir build-arm cd build-arm ``` 10. 运行 configure 脚本生成 Makefile: ``` ../configure --host=arm-linux-gnueabihf ``` 11. 编译 gdbserver: ``` make ``` 12. 安装 gdbserver: ``` sudo make install ``` 注意:需要将编译出的 gdbserver 文件复制到 ARM 开发上使用。 13. 可以使用 arm-linux-gnueabihf-gdb 命令测试 gdb 是否安装成功,使用 arm-linux-gnueabihf-gdbserver 命令测试 gdbserver 是否安装成功。 注意:编译 gdbgdbserver 需要安装一些依赖库,例如 libncurses、libexpat、libreadline 等,可以使用包管理器安装或者手动编译安装,并且需要安装对应的交叉编译工具链。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值