gdbserver调试工具移植到ARM Linux教程

应用移植 4880浏览 1评论

目前,嵌入式 Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机程序、用KGDB调试系统内核和用gdbserver调试用户空间程序。这三种调试方法的区别主要在于,目标机远程调试stub 的存在形式的不同,而其设计思路和实现方法则是大致相同的。

而我们最常用的是调试应用程序。就是采用gdb+gdbserver的方式进行调试。在很多接在情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程 序。采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。 Gdbserver在目标系统中运行,gdb则在宿主机上运行。

要进行GDB调试,目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序(目前似乎也可以用ARM的DS-5工具来替换宿主机的GDB,实现可视化调试)。一般linux发行版中都有一个可以运行的gdb,但开发人员 不能直接使用该发行版中的gdb来做远程调试,而要获取gdb的源代码包,针对arm平台作一个简单配置,重新编译得到相应gdb。

1 下载

下载GDB安装包,本文以当前最新版本7.8最为例,下载地址:http://ftp.gnu.org/gnu/gdb/,下载的安装包名称:gdb-7.8.tar.gz

 

2 解压

复制安装包到Linux主机,并解压:

$ mkdir ~/gdb
$ cp gdb-7.8.tar.gz ~/gdb
$ cd ~/gdb
$ tar zxvf gdb-7.8.tar.gz

 

3 配置

进入 gdbserver 目录,配置环境变量和编译选项:

$ cd gdb-7.8/gdb/gdbserver
$ export PATH=$PATH:/usr/local/arm-2010q1/bin/           # 交叉编译器路径
$ ./configure --host=arm-none-linux-gnueabi               # 配置交叉编译器
  •  --host: 指定交叉编译工具,一般为arm-none-linux-gnueabi、arm-linux-gnueabihf、arm-linux等,具体要和目标板用的交叉编译工具对应。

4 编译

编译命令如下:

$ make -j4                                                # 四核同时编译,提高速度

注意:gdbserver不需要make install。 

完成后,会在编译目录下生成一个 gdbserver 执行文件。

5 测试

将编译生成的 gdbserver 复制到目标板/usr/sbin上,修改执行权限,然后测试一个简单的helloworld程序:

$ cp gdbserver /usr/sbin                                  # 复制gdbserver到命令专用目录
$ chmod +x /usr/sbin/gdbserver                            # 增加为可执行权限
$ gdbserver 192.168.1.100:5000 helloworld                 # 启动调试,等待主机连接
Process helloworld created; pid = 698
Listening on port 5000

如上,gdbserver 已经执行,并侦听指定的5000端口。

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (1)

  1. gdbserver是个不错的来源调试工具
    第一次脸红 3年前 (2014-10-25) 回复 编辑