您的位置:首页 > 运维架构 > Linux

编译arm-linux-gdb和远程调试arm板程序

2015-10-05 10:27 369 查看
注:arm-linux-gdb的安装路径是/usr/local/arm-gdb

1、arm-linux-gdb的编译安装

下载gdb-6.8.tar.bz2至工作目录

gdb源码下载:http://ftp.gnu.org/gnu/gdb/

命令如下:

$tar -jxvf gdb-6.8.tar.bz2

$cd gdb-6.8

$./configure --target=arm-linux --enable-sim --prefix=/usr/local/arm-gdb

--prefix用于指定安装路径

$make

make时遇到以下错误:

configure: error: no termcap library found

make[1]: *** [configure-gdb] Error 1

make[1]: Leaving directory `/home/lining/gdb-6.8'

make: *** [all] Error 2

解决方法:主要是缺少termcap库文件,在终端里执行sudo apt-get install libncurses5-dev安装

$sudo make install

完成后可以在/usr/local/arm-gdb/bin下找到arm-linux-gdb文件

2、arm-linux-gdbserver的编译安装

进入./gdb/gdbserver

命令如下:

$cd gdb/gdbserver./configure --target=arm-linux --host=arm-linux

$make CC=arm-linux-gcc

(CC=arm-linux-gcc用于指定arm-linux编译器)

编译时出现PATH_MAX undeclared错误的解决方法:

在hostio.c文件中增加

#include <linux/limits.h>

原因是宏PATH_MAX在<limits.h>中没有定义,而是定义在<linux/limits.h>中

(红色表示我在编译时没有碰到这个错误,此错误是网友整理的,留在这里以供以后参考)

编译成功后在当前目录下会生成gdbserver文件,拷贝至开发板上(可放入开发板/usr/bin/目录下,这样在任何目录下均可执行gdbserver命令)

调试方法:

1、交叉编译,带参数-g加入调试信息。
假设要调试的程序为test.c。

#> arm-linux-gcc -g test.c -o test
2、在Target Board开启gdbserver
#> gdbserver <host-ip>:port test

#> gdbserver 192.168.0.1:2234 test
gdbserver开始监听2345端口(你也可以设其他的值),然后启动test,你会看到“Process test created:pid=88”
3、回到Host端

#> arm-linux-gdb /mnt/nfs/test
最后一行显示:This GDB was configured as “--host=i686-pc-linux-gnu,--target=arm-linux”...
说明此gdb在X86的Host上运行,但是调试目标是ARM代码。
(gdb)target remote <target-board-ip>:port

gdb> target remote 192.168.0.12:2234
注意:你的端口号必须与gdbserver开启的端口号一致,这样才能进行通信。
建立链接后,就可以进行调试了。调试在Host端,跟gdb调试方法相同。注意的是要用“c”来执行命令,不能用“r”。因为程序已经在Target Board上面由gdbserver启动了。结果输出是在Target Board端,用超级终端查看。

注意: 你可能会遇到主机和arm板都连同了但是却没有调试信息!

你可以在pc机端

gdb> symbol-file ../test (调用调试信息)

或者是:

#> ./arm-linux-gdb ../test

备注:就是要在开发板和pc主机上都要有运行的文件,调试信息是从本地的文件(../test)提取的!

另外有的程序需要根据程序崩溃产生的core文件来调试,所以要先产生core文件,方法:ulimit -a 先查询一下,然后ulimit -c 大小,这里我设置为unlimited。即ulimit -c unlimited 。

这样就可以在执行文件对应目录下产生core文件了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: