使用GDB在ARM上进行开发调试

一、安装GDB及GDB server

1.1 GDB简介

GDB调试环境由宿主机GDB和目标开发板的GDB server共同构成,两者通过串口或TCP连接。使用GDB标准串行协议协同工作,实现对目标机的系统内核和上层应用的监控和调试功能。

GdbServer是GDB的一个组件,但通常不随发行版本的GDB一同发布,需要用户自行编译GDB的源代码包得到相应的GDB和GDBServer,可以从下载地址:http://ftp.gnu.org/gnu/gdb/,或者百度获取下载地址。

1.2 安装GDB

本例中目标板为Hi3520D,使用的GDB是GDB 7.2,宿主机为ubuntu10.4(vmware),本机开发环境为win7 x64。在获取源码gdb-7.2a.tar.gz(24MB)后,将其解压:

1.tar zxvf gdb-7.2.tar.gz

2.配置GDB,./configure –target=arm-linux –enable-sim –prefix=/opt/arm-gdb(其中prefix为设置您所需要的安装目录)

3.编译及安装,执行make,然后执行make install

4.执行结束后,在/opt/arm-gdb/bin目录下可看到生成的应用程序。

5.将三个应用程序拷贝到/usr/local/bin。

1.3 安装GDB server

在编译安装GDB后,进入到目录gdbserver下,我的目录为/home/arm/gdb/gdb-7.2/gdb/gdbserver,在该目录下进行配置。在命令行里输入:./configure –target=arm-linux –host=arm-linux。接着,配置所采用的交叉编译器。我用的是Hi3520D,所用的交叉编译器为arm-hisiv100nptl-linux-gcc,因此我在命令行里输入 :

make CC=/opt/hisi-linux-nptl/arm-hisiv100-linux/target/bin/arm-hisiv100nptl-linux-gcc

注意,一定要写交叉编译器的绝对路径!编译完成后,在gdbserver目录下就会生成gdbserver和gdbreplay。,这两个文件就可以放在目标板上和开发编译的程序一起进行调试。而主机上可以采用编译出来的arm-linux-gdb作为主机端运行的调试。

二、测试代码及应用程序生成

为简单起见,我们就用一个十余行的C程序进行GDB调试演示。以下是C代码:

#include<stdio.h>

int add(int a,int b)
{
        return a+b;
}
int main(int argc ,char* argv[])
{
int num1=1,num2=2,time;
const int plusCount=3;
for(time=0;time!=plusCount;++time)
    printf("%dplus%d=%d.\r\n",num1,num2,num1+num2);
printf("%dplus%d=%d byfunc.\r\n",num1,num2,add(num1,num2));
return 0;

}

在命令行里输入:arm-hisiv100nptl-linux-gcc test.c -g -o test 即可生成应用程序test。注意,编译时一定要加入-g参数,表示应用程序调试。

三、GDB+GDB server nfs调试方法

进行调试前首先需要保证目标开发板与宿主机支持nfs。在宿主机上安装samba教程可自行百度获取,或者参考文章附录。本例中宿主机IP为218.192.171.55,目标板IP为218.192.171.72,开发环境(win7 x64)IP为218.192.171.78,宿主机的共享目录为/mnt/nfs。

1.将gdbserver和test拷贝到/mnt/nfs,更改应用程序权限:chmod 777 gdbserver test。

2.通过telnet或者minicom远程到目标板,挂载nfs:

mount -t nfs -o nolock -o tcp 218.192.171.55:/mnt/nfs /nfsroot

3.进入/nfsroot目录,输入指令:

./gdbserver 218.192.171.55:5000 test

其中,218.192.171.55为宿主机IP,5000表示目标开发板的调试端口(一般任意大于1024的端口号均可)。

4.在宿主机命令行输入:arm-linux-gdb test,接着输入:

target remote 218.192.171.72:5000

连接成功后,出现如下提示:

5.在宿主机命令行输入’c’,程序执行。效果如下:

目标板端输出提示如下:

注,本例仅进行简单测试,其它调试命令可参考附录。

四、串口调试

未完待续。

时间: 2024-08-11 07:34:37

使用GDB在ARM上进行开发调试的相关文章

微信公众平台开发调试方法

在这篇微信公众平台开发教程中,我们将介绍如何进行微信公众平台上的开发调试方法. 一.方倍微信调试器 微信调试器是方倍工作室开发的用于微信公众平台接口开发调试的工具,具有Token校验.模拟关注及取消关注.发送文本/图片/语音/视频/位置/链接.模拟事件发送等功能.其原型是微擎的Emulator. 微信调试器目前不支持IE浏览器下的使用,请下载Chrome浏览器或下载Firefox浏览器. 微信调试器的地址是 http://debug.fangbei.org/ .其界面如下 使用方法 1. Tok

微信开发调试环境

在微信开发的时候,必须是外网域名,我们本地没法进行调试,这给我们造成很大的不方便,系统在开发阶段容易出现bug,如果服务器上的版本已经在运行了,我们不能在那基础上进行开发调试,所以能够在本地进行微信开发很重要 使用智能助理来解决微信开发调试的问题 下载智能助理,和.net framework4.5环境 运行智能助理程序,注册一个用户,然后登录 把端口改成本机调试的端口 就可以使用赠送的公网域名访问本机了

使用jtag+gdb调试arm上的linux内核和驱动

调试对象为公司一块使用s3c2440的板子,调试器为基于ft2232d的openjtag,pc操作系统为ubunut14.04.2 x64,jtag->gdb桥为openocd 0.9.0.1.准备内核源码拷贝出两份完全一样的内核源码,不加调试信息的一份烧写/下载到板子上,加调试信息的一份用于调试.这里用uboot+nfs的方式下载内核.~/buildspacce/linux-2.6.32.2_debug~/buildspacce/linux-2.6.32.2_releasedebug版源码做如

Mac上使用Visual Studio Code开发/调试.NET Core代码

Mac上使用Visual Studio Code开发/调试.NET Core代码 .Net Core 1.0终于发布了,Core的一大卖点就是跨平台.这个跨平台不只是跨平台运行,而且可以跨平台开发.今天抽空研究了下在Mac下如何使用VS Code来开发.NET Core程序,并且调试代码. 1.安装.NET Core 在mac上打开终端: ~$ brew update ~$ brew install openssl ~$ brew link --force openssl 如果不能使用brew命

使用 GNU GCC 和 GDB 开发调试应用程序

gcc 命令的使用 在使用GCC编译程序时,编译过程可以被细分为四个阶段: 预处理(Pre-Processing) 编译(Compiling) 汇编(Assembling) 链接(Linking) 如果不加任何参数, gcc 默认执行所有的操作,直接生成可执行文件. 以上四个阶段对应参数为: 1.        -E  只执行预处理 2.        –S  只编译,不汇编和链接 3.        –c  编译汇编不链接 4.        –o  链接成目标文件 GCC常用选项 -c 通知

在cocos code ide的基础上构建自己的lua开发调试环境

现在无论是端游还是手游(基于cocos2d)的开发, 基本模式都是c++内核 + lua逻辑的路线.对于c++的开发和调试, vs已经能很好的满足开发者的需求, 微软这方面真是值得称颂.不幸的是, lua的开发和调试,还没有一个统一的,方便的开发调试环境,这也给广大的luaer和项目造成了极大的困扰.目前通常的做法大致有如下几种: 1.纯粹意义上的lua编辑器, 如Sublime Text 2 + 插件的模式,解决了代码提示和补齐问题. 2.编辑器的基础上加入调试功能, 通常是直接在vs上开发一

MPlayer在ARM上的移植(S5PV210开发板)

MPlayer 1.0已经把大部分解码库都自带了,如ffmpeg,但是自带的音频库在S5PV210下效果非常不好.换成使用libmad效果不错.因此MPlayer 在ARM-Linux的最简单的移植只需要移植这两个即可.移植后即进行字符界面的播放.      移植之前先做好移植前准备,安装好arm-linux交叉编译器,并下载 MPlayer-1.0rc2.tar.bz2 和libmad包(libmad-0.15.1b.tar.gz) 1.安装libmad(1)解压libmad解压libmad包

Eclipse开发调试ARM裸机程序

Makefile稍微动一下,就是原来的开头的“led_on.bin”改为“all”,eclipse默认编译的目标为“all”,就可以顺利编译通过了,编译完后会产生led_on.bin,led_on_elf.前者是下载到NandFlash中运行的,后者是调试用的. 能编译后就要开始配置调试了,和调试u-boot唯一不同的是指定应用程序的名字,如下图所示.其它的 Debugger Commands和调试u-boot中的配置一样的. 还有根据Makefile中的链接地址得出这个不是在SDRAM中运行的

软件开发--调试器GDB

一.GDB介绍 A.GDB1.GNU项目中的调试器2.能够追踪程序的执行,也能够恢复程序崩溃前的状态B.GDB的重要性1.软件不是一次性开发完成的(是软件就有bug,是程序就有问题)2.调试时软件开发过程中不可或缺的技术C.GDB的常规应用1.自定义程序的启动方式(指定影响程序运行的参数)2.设置条件断点(在条件满足时暂停程序的执行)3.回溯检查导致程序异常结束的原因4.动态改变程序执行流(定位问题的辅助方式)D.GDB的启动方式1.直接启动--gdb ,gdb test.out ,gdb te