建立ARM+Linux应用程序调试环境
时间:11-09
来源:互联网
点击:
Gdb+gdbserver+insight环境的搭建
1.下载gdb源代码http://ftp.gnu.org/gnu/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放在同一个文件夹下
vivi>./gdbserverhost: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软件包)
下载地址:http://sourceware.org/insight/版本为:insight-6.6.tar.bz2
$ tar–jxvfinsight-6.6.tar.bz2
$ cd insight-6.6
配置文件:
$./configure --target=arm-linux --enable-sim --prefix=/usr/local/arm/insight
配置选项的解释同上.
编译,$ make
安装,$ sudomakeinstall
注意:在第一次编译的时候老是出现问题,最后发现自己在装RedHat9.0的时候为了节省磁盘空间没有安装gtk软件包,所以编译的时候会出错。但是在装了之后,再次编译insight-6.8.tar.bz2版本,出现了X参数未初始化的错误。然后重新换成insight-6.6.tar.bz2版本,编译成功,安装.
关于gdb远程调试参见:http://codex.wordpress.org.cn/GDB_Manual_17_1
剩下需要解决,就是busybox在minicom下如何终止程序的运行。
1.下载gdb源代码http://ftp.gnu.org/gnu/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放在同一个文件夹下
vivi>./gdbserverhost: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软件包)
下载地址:http://sourceware.org/insight/版本为:insight-6.6.tar.bz2
$ tar–jxvfinsight-6.6.tar.bz2
$ cd insight-6.6
配置文件:
$./configure --target=arm-linux --enable-sim --prefix=/usr/local/arm/insight
配置选项的解释同上.
编译,$ make
安装,$ sudomakeinstall
注意:在第一次编译的时候老是出现问题,最后发现自己在装RedHat9.0的时候为了节省磁盘空间没有安装gtk软件包,所以编译的时候会出错。但是在装了之后,再次编译insight-6.8.tar.bz2版本,出现了X参数未初始化的错误。然后重新换成insight-6.6.tar.bz2版本,编译成功,安装.
关于gdb远程调试参见:http://codex.wordpress.org.cn/GDB_Manual_17_1
剩下需要解决,就是busybox在minicom下如何终止程序的运行。
ARMLinux调试环 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)