博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

ly44770

arm+linux学习中
   ly44770.cublog.cn
关于作者  
姓名:ly44770
职业:嵌入式
年龄:*
位置:北京
个性介绍:arm+linux学习中

我的分类  




构建自己的gdb+gdbserver调试arm程序
没做过之前感觉很深奥的,所以一直没有尝试过。现在要用了,只好搞起来,原来不过如此。:-)。从网上baidu了一些资料,照着做起来。人家讲的都很清楚了,可你不一定行的。需要根据自己的情况,因地制宜。
我遇到的问题有:
首先就是编译的问题。这个和你的系统,gcc有关系了。比如我的系统是fedora6,gdb的低版本(6.2,5.2.1),编译都通不过。只有6.6可以通过。我的交叉编译器是赫赫有名的2.95.3,:-)。
再有就是调试中的问题。板子的lib库中缺少一个文件:libthread_dd.so.1。解决方法就是从交叉编译器的lib库中copy一个了。copy前用arm-linux-strip处理一下先。不处理,不好使。反正我的是不好使。没处理前list命令无效,处理后就天下太平了。以下的内容就是我的参考文献了。:-)

嵌入式Linux的GDB调试环境由Host和Target两部分组成,Host端使用arm-linux-gdb,Target Board端使用gdbserver。调试时,应用程序在嵌入式目标系统上运行,而gdb调试在Host端。
 一、编译安装gdb+gdbserver
 首先下载gdb源码,我下载的是gdb-6.6.tar.gz。
$tar xvzf gdb-6.6.tar.gz
$mkdir mygdb
$cd mygdb
必须要在你想要安装的目录下执行下边的命令。
$../gdb-6.6/configure --target=arm-linux   \ --prefix=/home/a/mygdb
参数说明:target是你的目标板,我的是arm-linux,prefix是你要安装的目标文件夹。
$make
$make install
然后建立gdbserver。
$mkdir mygdbserver
$cd mygdbserver
$chmod +x ../gdb-6.6/gdb/gdbserver/configure
$CC=arm-linux-gcc ../gdb-6.6/gdb/gdbserver/configure \
--host=arm-linux  --prefix=/home/a/mygdbserver
$make
$make install
$arm-linux-strip gdbserver
去除调试信息。不去好像不行,我的就不行,去了就ok了。
复制到你的开发板上就可以了。
 二、调试步骤
1、交叉编译,带参数-g加入调试信息。
假设要调试的程序为test.c。
#arm-linux-gcc -g test.c -o test
2、在Target Board开启gdbserver
#gdbserver  <host-ip>:2345 test
gdbserver开始监听2345端口(你也可以设其他的值),然后启动test,你会看到“Process test created:pid=88”
3、回到Host端
#arm-linux-gdb test
最后一行显示:This GDB was configured as “--host=i686-pc-linux-gnu,--target=arm-linux”...
说明此gdb在X86的Host上运行,但是调试目标是ARM代码。
(gdb)target remote <target-board-ip>:2345
注意:你的端口号必须与gdbserver开启的端口号一致,这样才能进行通信。
建立链接后,就可以进行调试了。调试在Host端,跟gdb调试方法相同。注意的是要用“c”来执行命令,不能用“r”。因为程序已经在Target Board上面由gdbserver启动了。结果输出是在Target Board端,用超级终端查看。

 发表于: 2007-05-11,修改于: 2007-05-11 10:57 已浏览1588次,有评论4条 推荐 投诉

  网友评论
  mailer3721 时间:2007-05-18 23:32:03 IP地址:59.34.5.★
写的还算详细:)加油,共同进步。

Blog作者的回复:
:-),thanks。努力!

  blue 时间:2007-06-10 21:02:19 IP地址:60.214.121.★
写的挺好的!
不错!
收下先

  本站网友 时间:2007-08-31 17:04:29 IP地址:121.34.166.★
请教:我的板上使用GDB/GDBSERVER也出现缺少thread_db.so.1文件,现象如下:root@ebd9260:/mnt/testcode# gdbserver: error while loading shared libraries: lib
thread_db.so.1: cannot open shared object file: No such file or directory
我将armv5l-linux中的thread_db.so.1处理后,放到开发板/USR/BIN下,还是不行,请教一下,你是如何处理的?

  付文涛 时间:2007-09-03 22:18:50 IP地址:222.174.155.★
我是你的师弟,自动化研究所的,我的qq154793677,学习arm+linux中,有问题请教。你的qq是?


  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.21915

京ICP证041476号