一、交叉调试工具
1、主机 : arm-linux-gdb
2、 arm: gdbserver
在开发主机上运行 arm-linux-gdb 程序,可以通过串口或网口与驻留在 ARM 开发板上的 gdbserver
程序进行通信,完成 ARM 开发板上应用程序的调试和跟踪。
二、交叉调试工具的生成
1、下载 gdb 源码
要完成交叉调试需要以上两个工具,在 http://ftp.gnu.org/gnu/gdb/下载 gdb 源码,再进行配置和编
译即可获得以上两个工具软件。
gdb 源码的版本为: gdb-6.8
源码包名称: gdb-6.8a.tar.bz2
2、编译环境
开发主机系统: ubuntu11.10
开发主机 gcc 版本: 4.4.6
交叉编译器版本: 4.5.1
三、配置和编译
1、解压源码
首先进入 gdb-6.8a.tar.bz2 所在的目录,解压后会在当前目录生成新的源码目录: gdb-6.8,在 shell
下输入以下命令 (红色为命令 )。
bill@bill-zhang:~/Downloads$tar -xvf gdb-6.8a.tar.bz2
2、进入源码目录
进入 gdb-6.8 目录,命令如下:
bill@bill-zhang:~/Downloads$ cd gdb-6.8
bill@bill-zhang:~/Downloads/gdb-6.8$
创建目标文件目录,命令如下:
bill@bill-zhang:~/Downloads/gdb-6.8$ mkdir output
3、编译 arm-linux-gdb
在源码目录下进行配置,配置完成后会在当前目录和 gdb 目录下生成 Makefile 文件,命令如下:
bill@bill-zhang:~/Downloads/gdb-6.8$./configure --target=arm-linux --enable-shared
--prefix=/home/bill/Downloads/gdb-6.8/output/x86 --without-x --disable-gdbtk --without-
included-regex --without-include-gettext
编译,命令如下:
bill@bill-zhang:~/Downloads/gdb-6.8$ make
编译过程中会出错,信息如下:
cc1: warnings being treated as errors
.././gdb/cli/cli-cmds.c: In function ‘pwd_command’:
.././gdb/cli/cli-cmds.c:323: error: ignoring return value of ‘getcwd’, declared with attribute
warn_unused_result
make[2]: *** [cli-cmds.o] Error 1
make[2]: Leaving directory `/home/bill/Downloads/gdb-6.8/gdb'
make[1]: *** [all-gdb] Error 2
make[1]: Leaving directory `/home/bill/Downloads/gdb-6.8'
make: *** [all] Error 2
经过对以上信息分析可知,编译时把告警按错误看待,所以编译失败。解决办法是修改 gdb-6.8/gdb
目录下的 Makefile 的第 145 行,即注释调” -Werror“即可
#WERROR_CFLAGS = -Werror
WERROR_CFLAGS =
安装,目标文件会安装在 /home/bill/Downloads/gdb-6.8/output/x86 目录下,命令如下:
bill@bill-zhang:~/Downloads/gdb-6.8$ make install
4、编译 gdbserver
进入 gdbserver 目录,命令如下:
bill@bill-zhang:~/Downloads/gdb-6.8$ make gdb/gdbserver
进行配置,命令如下:
bill@bill-zhang:~/Downloads/gdb-6.8$./configure --host=arm-linux
--prefix=/home/bill/Downloads/gdb-6.8/output/arm --without-include-regex --without-included-
gettext
编译,命令如下:
bill@bill-zhang:~/Downloads/gdb-6.8/gdb/gdbserver$make
安装,目标文件 gdbserver 会安装在 /home/bill/Downloads/gdb-6.8/output/arm 目录下,命令如下:
bill@bill-zhang:~/Downloads/gdb-6.8/gdb/gdbserver$make install
gdbserver 进行瘦身,命令如下:
bill@bill-zhang:~/Downloads/gdb-6.8/gdb/gdbserver$arm-linux-strip /home/bill/Downloads/gdb-
6.8/output/arm/gdbserver
四、测试
以调试测试例程为例:
源文件: test.c
编译目标可执行文件: gcc -g -o test test.c,注意一定要加上” -g“,否则不能进行调试。
1、目标板上操作
将生成的 test 文件和 gdbserver 下载到 ARM 开发板上,在开发板的 Shell 上输入:
#./gdbserver 192.168.1.100:2345 test
其中 192.168.1.100 为开发机的 IP 地址
2、开发机上操作
bill@bill-zhang:~/Downloads/gdb-6.8/gdb/output/x86$./arm-linux-gdb test
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux"...
(no debugging symbols found)
(gdb)target remote 192.168.1.5:2345
其中 192.168.1.5 为开发板的 IP 地址
连接上后开发板的串口上会出现以下打印:
Remote debuging from host 192.168.1.100
(gdb)