Live & Learn
分类: LINUX
2010-04-30 09:56:30
建立ARM+Linux调试环境
Gdb+gdbserver+insight环 境的搭建
1. 下载gdb源代码
2. 配置安装gdb+gdbser
Tar jxvf gdb-6.6.tar.bz2
Cd X/gdb
./configure --target=arm-linux --prefix=/usr/local/arm-gdb –v
--prefix用于指定安装路径
--target=arm-linux用于制定目标环境的编译
编译,make
安装,sudo make install
之后在X/bin夹下生成arm-linx-gdb可执行文件.
Cd gdbserver
配置文件:
#./configure
--target=arm-linux --host=arm-linux
(--target=arm-linux表示目标平台,--host表示主机端运行的是arm-linux-gdb,不需要配置—prefix,因为gdbserver不在主机端安装运行)
#make CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc
(这一步要指定你自己的arm-linux-gcc的绝对位置,相对的通常不行,提示make: arm-linux-gcc: Command not found,如果用的相对路径,即直接赋值arm-linux-gcc,可采取make时传递参数,也可以直接修改gdbserver目录下的Makefile文件中的环境变量CC)
之后
在gdbserver目录下生成gdbserver可执行文件.
可将它通过nfs拷贝到目标板上运行.
如:mount –t nfs
host:/friendly-arm/root /mnt –o ro,nolock
这里如果没有加上选项–o
ro,nolock无法正常mount.
@在目标板上运行
(1)将要调试的文件和gdbserver放在同一个文件夹下
./gdbserver host:port “待调试文件”
(2)在主机段执行arm-linux-gdb “待调试文件”
(gdb)target remote client:port 连接客户机
注意:(1)在目标机上通过gdbserver调试的在gdbserver运行的时候已经运行了,并且其中
不包含调试的符号信息,所以要想加入符号信息只能通过host运行的gdb加入含有调试信息的可执行文件。
(2)刚开始的时候将./gdbserver下载到目标机后不能运行,其主要原因就是所制作的根文件缺少libthread_db.so.1库文件。但是发现lib中并没有该文件,只有一个链接文件,通过file查看:
[root@localhost
lib]# file libthread_db.so.1
Libthread_db.so.1:
symbolic link to libthread_db-1.0.so
发现该链接文件链接到libthread_db-1.0.so该库文件,于是将文件libthread_db-1.0.so拷贝到根文件系统,然后改名为Libthread_db.so.1,之后gdbserver能正常运行了.
3. 安装gdb图 形调试界面insight (gtk软件包)
下载地址: 版本为:insight-6.6.tar.bz2
Tar –jxvf insight-6.6.tar.bz2
Cd insight-6.6
配置文件:
./configure
--target=arm-linux --enable-sim --prefix=/usr/local/arm/insight
配置选项的解释同上.
编译,make
安装,sudo make install
注意:在第一次编译的时候老是出现问题,最后发现自己在装RedHat9.0的时候为了节省磁盘没有安装gtk软件包,所以编译的时候会出错。但是 在装了之后,再次编译insight-6.8.tar.bz2版本,出现了X参数未 初始化的错误。然后重新换成insight-6.6.tar.bz2版本,编译成功,安装,OK。
关于gdb远程调试参见:
剩下需要,就是busybox在minicom下如何终止程序的运行。