arm-linux-gdb & gdbserver 远程调试工具的搭建与使用

ARM 308浏览

     由于嵌入式系统资源有限性,一般不能直接在ARM上进行调试,通常采用arm-linux-gdb+gdbserver的方式进行远程调试。Target端(ARM)使用 Gdbserver,host端(PC主机)使用arm-linux-gdb,双方最好统一编译工具链。在应用程序调试的时候,pc机上的arm-linux-gdb向开发板上的Gdbserver发出命令,接着ARM开发板上的gdbserver就会向应用程序发出信号,从而进行调试。

     几个月前,曾利用过gdbserver进行远程调试,现在换了新主机,怎么搭建使用都忘了。一个好记性,不如一个好博客,看来以后还是得养成多写博客的习惯,总感觉网上这方面教程有点乱,索性自己写一个,方便自己,同时希望也能帮助到他人。注意,我的PC机是ubuntu16.04 64bit系统

1、gdbserver的搭建

1)、下载GDB安装包,下载地址:http://ftp.gnu.org/gnu/gdb/,以7.8版本为例,下载的安装包名称:gdb-7.8.tar.gz

2)、解压

tar zxvf gdb-7.8.tar.gz

3)、配置交叉编译器,

cd gdb-7.8/gdb/gdbserver

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

: 在编译gdbserver时,需要指定host为arm-linux,该选项是说明目标平台是运行于arm体系结构的linux内核,我的ARM平台32bit,就选择arm-linux-gnueabihf,

        --target 指定了目标机交叉编译器前缀,比如--target=arm-linux (生成64bit的gdbserver)

        --host   指定了编译后的程序需要在哪里运行, 比如,--host=arm-linux

         --prefix  指定了可执行文件的安装目录(我没有指定,就默认安装在当前目录下)

4)、编译, 4核同时编译,提高速度,具体根据电脑配置而定

make -j4 

     编译完成后,会在当前目录下生成gdbserver 32位可执行程序

5)、查看文件信息,

file gdbserver

结果如下

gdbserver: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 3.2.0, BuildID[sha1]=0ff92ed87ce3d66952c25daabc4f60c5418dbdab, not stripped

 6)、将生成的gdbserver adb push到ARM开发板上去(当然,也可用nfs的方式),并修改执行权限。我的PC主机IP地址是172.16.5.221 ,ARM开发板地址是172.16.5.116,查看方式如下:

------------------------------------------------------------------------------------------------------------------------------------------

2、arm-linux-gdb搭建

1)进入gdb-7.8的根目录下,创建用于保存arm-linux-gdb的文件夹

mkdir arm-gdb

2)配置编译器,注意目录必须是绝对路径

./configure --target=arm-linux --prefix=/home/lyq/tools/gdb-7.8/arm-gdb

3)编译安装

make && make install

完成后,arm-gdb文件夹下就生成了如下文件

4)在bin目录下就有了arm-linux-gdb和arm-linux-run这两个可执行文件,将此路径添加到系统环境变量即可,示例:

vim ~/.bashrc

在文件最后一行加入(注意路径)

export PATH=$PATH:/home/lyq/tools/gdb-7.8/arm-gdb/bin

保存退出,使新添加的路径生效

source ~/.bashrc

完成后,输入export -p 可以查看路径是否添加成功。成功后即可在PC上使用arm-linux-gdb了

------------------------------------------------------------------------------------------------------------------------------------------

3 远程调试工具的使用

 

 

 

4、遇到的问题及解决方案

1)在步骤2搭建arm-linux-gdb make的时候遇到 configure: error: no termcap library found,这是缺少

ncurses安装包的原因,下载安装相应软件包,即可解决该问题:

sudo apt-cache search ncurses

sudo apt-get install libncurses5-dev