GDB远程调试(一)之DM8168下gdb远程调试环境的搭建

1、前言

gdb是较为流行和通用的linux环境调试工具,掌握它对于嵌入式开发工作来说非常必要,能够提高工作效率,快速发现和解决问题。最近有兴趣研究了下gdb使用,特总结如下以备以后查阅。

2、下载最新的gdb

下载地址:http://ftp.gnu.org/gnu/gdb/,选择目前最新的版本下载。我选择了gdb-7.7.tar.gz版本

3、编译gdb和gdbserver

(1)解压到你的工作目录:

[email protected]:~$ tar -xvf gdb-7.7.tar.gz

(2)添加环境变量:

[email protected]:~$ vi .bashrc

添加以下两条,

#gdb安装位置

export PATH="$PATH:/home/zhaochenhui/gdb-7.7/bin"

#DM81xx交叉编译集安装位置

exportPATH="$PATH:/opt/DVRRDK_04.00.00.03/ti_tools/cgt_a8/arago/linux-devkit/bin"

然后保存退出。

~$source.bashrc   #立即生效

(3)修改代码

修改./gdb-7.7/gdb/remote.c文件如下代码,注释掉:

if (buf_len > 2 * rsa->sizeof_g_packet)

error (_("Remote ‘g‘ packet reply istoo long: %s"), rs->buf);

替换为:

if (buf_len > 2 *rsa->sizeof_g_packet) {

rsa->sizeof_g_packet =buf_len ;

for (i = 0; i <gdbarch_num_regs (gdbarch); i++)

{

if (rsa->regs[i].pnum ==-1)

continue;

if (rsa->regs[i].offset>= rsa->sizeof_g_packet)

rsa->regs[i].in_g_packet =0;

else

rsa->regs[i].in_g_packet =1;

}

}

否则会有附录所示的错误产生。

(4)编译arm-arago-linux-gnueabi-gdb(服务器端)

gdb-7.7使用了autoconf/automake。因此,通过设置configure脚本的--target,--host,--prefix参数就可以方便的移植到别的平台。--target指定了需要调试的目标机环境,一般设置为交叉编译器的前缀,比如--target=arm-linux,--target=mips-linux,--target=armv5-linux-uclibc,--target的缺省值为i386-linux,也就是i386PC机--host指定编译后的文件的运行环境,取值可以是i386-linux或者交叉编译器的前缀,缺省为i386-linux

--prefix为指定要安装的目录。

在gdb-7.7目录下输入:

[email protected]:~/gdb-7.7$./configure --target=arm-arago-linux-gnueabi --prefix=/home/zhaochenhui/gdb-7.7/bin

配置成功后会显示创建了Makefile

接下来

[email protected]:~/gdb-7.7$make

[email protected]:~/gdb-7.7$make install

(5)编译arm-arago-linux-gnueabi-gdbserver(目标板端)

[email protected]:~/gdb-7.7$cd gdb/gdbserver/

[email protected]:~/gdb-7.7/gdb/gdbserver$./configure--target=arm-arago-linux-gnueabi --prefix=/home/zhaochenhui/gdb-7.7/bin--host=arm-linux

编译的时候要指定交叉编译器,因为arm-arago-linux-gnueabi-gdbserver是运行在目标板的。

[email protected]:~/gdb-7.7/gdb/gdbserver$makeCC=/opt/DVRRDK_04.00.00.03/ti_tools/cgt_a8/arago/linux-devkit/bin/arm-arago-linux-gnueabi-gcc

编译结果有错误,如图所示:

linux-arm-low.c没有找到sys/reg.h文件,这可能是Makefile没有正确包含sys/reg.h的路径,不同的操作系统有一定的区别。那么开始找本系统的sys/reg.h

根据一定的经验,最有可能在/usr目录下,那么先从这找起,输入:

[email protected]:/usr$find -iname "reg.h"

果然./include/x86_64-linux-gnu/sys/reg.h最像,直接修改代码,或者在Makefile的include中添加,查找include的方法,输入:

[email protected]:~/gdb-7.7/gdb/gdbserver$cat Makefile | grep -i "include"

看到INCLUDE_CFLAGS,可以在这后面添加-Ibalabala~~~等等。

在linux-arm-low.c 129行修改:

改为:

保存退出。

[email protected]:~/gdb-7.7/gdb/gdbserver$make

[email protected]:~/gdb-7.7/gdb/gdbserver$make install

编译后的结果如下:

至于arm-arago-linux-gnueabi-run是做什么用的,目前我也不知道。但是咱们需要的arm-arago-linux-gnueabi-gdb,arm-arago-linux-gnueabi-gdbserver已经编译完成。

4、测试是否可用

(1)目标板端

将arm-arago-linux-gnueabi-gdbserver拷贝到目标板端的nfs调试目录,随便找个测试程序,输入:

./arm-arago-linux-gnueabi-gdbserver  192.165.54.12:30000 edma_test_drv

其中192.165.54.12是你的nfs调试服务器IP,30000是调试的监听端口,gdbserver与目标板通过此30000端口保持通信,edma_test_drv是调试应用程序。如下图所示:

(2)服务器端

在同样的nfs调试目录输入:

[email protected]:~/ti8168_mnt/projxxxx/app_driver$./arm-arago-linux-gnueabi-gdb edma_test_drv

gdb启动如图所示:

然后输入:target remote 192.165.54.170:30000

其中192.165.54.170是目标板IP,端口也是30000,这样gdbserver与目标板就能通信,调试了,如下图:

完。

附录:

Remote ‘g‘ packet reply is too long错误,输入l,也没有显示代码

GDB远程调试(一)之DM8168下gdb远程调试环境的搭建,布布扣,bubuko.com

时间: 2024-08-02 10:59:25

GDB远程调试(一)之DM8168下gdb远程调试环境的搭建的相关文章

windows下python web开发环境的搭建

windows下python web开发环境: python2.7,django1.5.1,eclipse4.3.2,pydev3.4.1 一. python环境安装 https://www.python.org/ftp/python/2.7/python-2.7.amd64.msi 不多说,装完后把C:\Python27加入到path环境变量里. 然后就溜溜python,看看version啦.OK,next step. 二. python web开发框架django安装 django是一个采用

浅谈Linux下的LAMP开发环境的搭建及discuz、phpWind、phpBB3、wordpress各种论坛博客的安装

LAMP开发可以说非常流行了,稳定安全的Linux系统和apache服务器搭配轻量级的PHP.MYSQL可以说是完美组合.可以在效率和安全性等各个方面都比ASP.NET.JSP等动态语言优胜一筹.这也是php这么流行的原因之一.说到Linux,不得不说这是一个最好用的操作系统,因为它安全,效率高,对于任何一个细节都力求做到完美.因为它是许多GEEK们汗水的结晶.那么今天所讲就是LAMP开发中最基本的就是搭建LAMP环境.在Linux下搭建该环境非常简单,可以说非常简单,没有太多环境配置的过程.可

Linux下Hadoop集群环境的搭建

本文旨在提供最基本的,可以用于在生产环境进行Hadoop.HDFS分布式环境的搭建,对自己是个总结和整理,也能方便新人学习使用. 基础环境 JDK的安装与配置 现在直接到Oracle官网(http://www.oracle.com/)寻找JDK7的安装包不太容易,因为现在官方推荐JDK8.找了半天才找到JDK下载列表页的地址(http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html).因

Windows环境下ARM集成开发环境的搭建与使用

Windows环境下能够使用Eclipse IDE for C/C++ Developers来搭建ARM开发环境 本文地址:http://blog.csdn.net/u011833609/article/details/30290655 安装过程例如以下: 1. 安装Java SE 网址:http://www.oracle.com/technetwork/java/javase/downloads/jre-7u3-download-1501631.html 下载这个文件:jre-7u3-wind

Ubuntu 下 JDK+Tomcat+MySql 环境的搭建

3.    安装 MySql 3.1    安装 使用 apt-get install 方式安装,终端输入:sudo apt-get install mysql-server-5.1  ( 小提示: 搜索软件: apt-cache search 软件名关键字,支持模糊查询, 譬如: apt-cache search mysql ) 安装过程中,有两次提示输入 mysql 的 root 账号的密码,这里输入 root ,确定,直至安装完成. 3.2    创建用户 Mysql 安装完之后,已自动启

Ubuntu下JDK+Tomcat+MySql环境的搭建

主机在阿里云上,所以网络的配置都省了,只剩下软件的安装和配置 1.安装mysql 1.1 apt-get install mysql-server-5.5 安装过程中,有两次提示输入 mysql 的 root 账号的密码,这里输入 123456 ,确定,直至安装完成. 终端输入mysql –u root –p 回车 输入密码:123456 1.2 进入 mysql 的控制台.创建一个用户(用户名为: test ,密码为: 123456 ),并授权,以便远程访问 mysql (如果需要的话): g

window下Apache+php+Mysql环境的搭建及其涉及的知识

一.安装Apache 1. 在网上搜索以下3个文件,以及找一个地方新建一个文件夹 文件夹内有:apache,mysql,php文件夹,最好都不要有中文路径 https是采用ssi加密之后的http协议,更安全! msi是微软的安装程序包! 2. 安装Apache的话,直接安装二进制文件(可执行文件)即可 如果是win10操作系统,需要以管理员的身份运行: 然后进入软件安装节奏 设置基本信息 然后next 3.选择自定义安装 4.选择安装路径(!所有的目录不能出现任何中文) 5.安装 除了loca

Linux下Redis集群环境的搭建

一.安装redis(使用redis3.0版本) 1.需要gcc环境,如果没有执行命令安装gcc yum install gcc-c++ 2.下载redis3.0的源码包并上传至服务器 3.解压源码包 tar -zxvf redis-3.0.0.tar.gz 4.进入解压目录编译 make 5.安装redis make install PREFIX=/usr/local/redis 二.启动redis 1.从redis-3.0.0文件中复制redis-conf到redis的安装目录中 2.然后修改

Wndows下Apache+php+Mysql环境的搭建及其涉及的知识(转)

一.安装Apache 1. 在网上搜索以下3个文件,以及找一个地方新建一个文件夹 好吧,这里有下载链接:http://pan.baidu.com/s/1hr9IdSS 文件夹内有:apache,mysql,php文件夹,最好都不要有中文路径 https是采用ssi加密之后的http协议,更安全! msi是微软的安装程序包! 2. 安装Apache的话,直接安装二进制文件(可执行文件)即可 如果是win10操作系统,需要以管理员的身份运行: 然后进入软件安装节奏 设置基本信息 然后next 3.选