无忧商务网,免费信息发布推广平台,您可以 [登陆后台] 或 [免费注册] 无忧商务网 | 企业黄页 | 产品库存 | 供求信息 | 最新报价 | 企业资讯 | 展会信息
黄页信息| 库存信息| 技术服务| 供应信息| 求购信息| 二手信息| 加工信息| 供求库| 报价库| 展会库| 代理信息| 保健| 生活黄页| 食谱| 网络黄页| 水族休闲| 人力HR| 招聘
首页>>生活网>>生活保健>>3C小百科-消费性电子-其他
嵌入式Linux的GDB远程调试的实现

 远程调试环境由宿主机gdb和目标机调试stub共同构成,两者通过串口或TCP连接。使用GDB标准程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式系统中的一段代码,作为宿主机GDB和目标机调试程序间的一个媒介而存在。<BR>          <BR>       就目前而言,嵌入式Linux系统中,主要有三种远程调试方法,分别适用于不同场合的调试工作:用ROM Monitor调试目标机程序、用KGDB调试系统内核和用gdbserver调试用户空间程序。这三种调试方法的区别主要在于,目标机远程调试stub 的存在形式的不同,而其设计思路和实现方法则是大致相同的。<BR>而我们最常用的是调试应用程序。就是采用gdb+gdbserver的方式进行调试。在很多情况下,用户需要对一个应用程序进行反复调试,特别是复杂的程序。采用GDB方法调试,由于嵌入式系统资源有限性,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。Gdbserver在目标系统中运行,gdb则在宿主机上运行。<BR><BR>       行GDB调试,目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序。一般linux发行版中都有一个可以运行的gdb,但开发人员不能直接使用该发行版中的gdb来做远程调试,而要获取gdb的源代码包,针对arm平台作一个简单配置,重新编译得到相应gdb。gdb的源代码包可以从http: //ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/下载,最新版本为gdb-6.4。下载到某个目录,笔者下载到自己的用户目录:/home/vicky。<BR>下载完后,进入/home/vicky目录,配置编译步骤如下:<BR><BR>#tar jxvf gdb-6.4-tar-bz2<BR>#cd gdb-6.4<BR>#./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v<BR>#make<BR>(这一步的时候可能会有问题,提示一个函数中(具体函数名不记得了)parse error,就是unsigned前边多了一个&#8221;}&#8221;,你用vi进入那一行把它删掉就行了。)<BR><BR>#make install<BR>#export PATH=$PATH:/usr/local/arm-gdb<BR>进入gdbserver目录:<BR>#./configure --target=arm-linux &#8211;host=arm-linux<BR>#make CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc<BR>(这一步要指定arm-linux-gcc的位置,可能跟你的不一样)<BR><BR>       没有错误的话就在gdbserver目录下生成gdbserver可执行文件,把它烧写到flash的根文件系统分区,或通过nfs mount的方式都可以。只要保证gdbserver能在开发板上运行就行。<BR><BR>       下面就可以用gdb+gdbserver调试我们开发板上的程序了。在目标板上运行gdbserver,其实就是在宿主机的minicom下,我的red hat linux装在vmware下的。我是在minicom下#mount 192.168.2.100:/ /tmp后做的(这里参数-o nolock可以不加,不加这一步执行得反而更快些),hello和gdbserver都是位于linux根目录下,把主机根目录挂在到开发板的/tmp 目录下。<BR><BR>       要进行gdb调试,首先要在目标系统上启动gdbserver服务。在gdbserver所在目录下输入命令:<BR><BR>(minicom下)<BR>#cd /tmp<BR>#./gdbserver 192.168.2.100:2345 hello<BR>192.168.2.100为宿主机IP,在目标系统的2345端口开启了一个调试进程,hello为要调试的程序。<BR>出现提示:<BR>Process /tmp/hello created: pid=80<BR>Listening on port 2345
<P>(另一个终端下)<BR>#cd /<BR>#export PATH=$PATH:/usr/local/arm-gdb/bin<BR>#arm-linux-gdb hello<BR>(gdb) target remote 192.168.2.223:2345<BR>(192.168.2.223为开发板IP)<BR><BR>出现提示:<BR>Remote debugging using 192.168.2.223:2345<BR>[New thread 80]<BR>[Switching to thread 80]<BR>0x40002a90 in ??()<BR>同时在minicom下提示:<BR>Remote debugging from host 192.168.2.100<BR>(gdb)<BR>连接成功,这时候就可以输入各种gdb命令如list、run、next、step、break等进行程序调试了。<BR><BR>       以上针对通过nfs mount和tftp的方式,只能在主机上调试好后下载到开发板上运行,如果有错误要反复这个过程,繁琐不说,有些程序只能在开发板上调试。所以笔者采用了gdbserver的远程调试方式。希望对大家调试程序有用!</P>
相关资讯
类别浏览
安徽 北京 福建 甘肃 广东 广西 贵州 海南 河北 河南 黑龙江 湖北 湖南 吉林 江苏 宁夏 青海 山东 山西 陕西 上海 四川 天津 新疆 西藏 云南 浙江 重庆 辽宁 江西 内蒙古
无忧商务网 版权所有 Copyright © 2020.6 www.cn5135.com All Rights Reserved. 湘ICP备12008603号
本站所有产品都是会员自行发布,所有信息都有对方的企业名片和联系方式,如果您需要咨询产品具体参数和细节,请直接联系和咨询厂商,谢谢。
行业子站: 机械 库存 建材 物流 礼品 能源 农业 汽摩 食品 通讯 五金 玩具 矿产 印刷 休闲 服务 服装 化工 环保 电子 纺织 电工 电脑 电器 办公 安全 包装 仪器 家居