嵌入式Linux的GDB在线调试环境由Host端(PC机)和Target端(ARM实验板)两部分组成,Host端使用arm-linux-gdb调试工具,而Target端需要运行gdbserver,两者之间可通过串口或网口连接,把ARM应用程序在Target端的执行情况返回Host。调试跟踪命令从Host端中的arm-Linux-gdb中发出。
首先介绍一下我的使用环境:操作系统为ubuntu10.10,编译器为gcc 4.5.1,交叉编译器为arm-none-linux-gnueabi-gcc (Sourcery G++ Lite 2011.03-41) 4.5.2,处理器为Arm9内核。本文内容都是在上述条件下进行配置编译,环境不同时,请做出相应的配置修改。ubuntu的用户为root用户,如果使用非root用户,下述命令前请增加sudo。
1. 下载gdb源码包
下载地址:http://ftp.gnu.org/gnu/gdb
请大家根据实际情况下载。不一定需要下载最新的。 此处以gdb-7.6.tar.bz2为例。
2. 解压文件
tar -vxzf gdb-7.9.tar.gz
3. 安装arm-linux-gdb
进入到gdb源码目录
cd gdb-7.6
./configure --target=arm-none-linux-gnueabi --prefix=/home/sunny/cross/gdb_arm
make
make install
注:/home/sunny/cross/gdb_arm为arm-linux-gdb安装目录
安装时出错,说缺少expat.h,下载安装expat包。此处不多说了,基本都类似。
修改环境变量
gedit /etc/environment
直接把/home/sunny/cross/gdb_arm/bin加入环境变量中。
PC端的gdb就安装完成了,接下来安装开发板端的gdbserver。
4. 安装gdbserver
进入gdbserver目录
cd gdb/gdbserver
./configure --host=arm-none-linux-gnueabi --target=arm-none-linux-gnueabi --prefix=/home/sunny/cross/gdb_arm/gdbserver
make CC=arm-none-linux-gnueabi-gcc
make install
如果没有错误,在/home/sunny/cross/gdb_arm/gdbserver/bin目录下就会出现gdbserver可执行文件,此处我的是arm-none-linux-gnueabi-gdbserver。
5.调试
调试方式有多种方式,①PC机共享网络文件夹,target挂载共享文件夹后,直接调试;②把调试的程序和gdbserver复制到target,然后运行调试。
此处我采用第二种方式。
首先远程终端target运行arm-none-linux-gnueabi-gdbserver 172.72.101.226:66666 test
PC机在要调试的程序的目录下运行arm-none-linux-gnueabi-gdb test
然后输入:target remote 172.72.101.221:66666
然后就可以想在PC上调试一样调试了。