使用的是扬创的utu2440板,其他的页一样,板子配置:S3C2440+Linux2.6内核+yaffs根文件系统。

PC机配置:Vmware虚拟机+SlackWare12内核2.6,交叉编译器为arm-linux-gcc 3.4.1。
主要步骤都是在pc机端完成的。
1.首先从网上下载一个gdb源码包。
地址: http://ftp.gnu.org/gnu/gdb/gdb-6.4.tar.gz
2.通过smb或者直接用共享文件夹复制到Linux虚拟机中。
# tar zxvf gdb-6.4.tar.gz    解压源码包
# cd gdb-6.4   进入文件夹
# ./configure --target=arm-linux --prefix=/usr/local/arm/gdb-6.4 -v  指定目标类型为arm,指定gdb的安装路径为/usr/local/arm/gdb-6.4 如果没有可以先建立一个,# mkdir /usr/local/arm/gdb-6.4
# make 编译
# make install 安装到指定目录
# cd /usr/local/arm/gdb-6.4/ ; ls  查看是否有东西
root@chrissie:/usr/local/arm/gdb-6.4# ls
bin/  info/  lib/  man/  share/
里面有这些文件夹,此时需要设置环境变量,因为我们需要的 arm-linux-gdb(类似于arm-linux-gcc)在这里的bin文件夹中,方法:# vi /etc/profile 打开配置文件,并在最后加上 
export PATH=/usr/local/arm/gdb-6.4/bin:$PATH
在使之生效               # source /etc/profile
# arm-linux-gdb -v 再用查看一下,有信息则说明成功安装了。
以上安装的是Linux PC端的gdb工具,接着编译开发板上使用的gdbserver。
方法:# cd gdb/gdbserver
# ./configure --target=arm-linux --host=arm-linux
# make
此时可以在gdbserver目录下生成gdbserver文件,这个文件只能在开发板上跑,用ls查看一下:
root@chrissie:/home/gdb/gdb-6.4/gdb/gdbserver# ls
acinclude.m4    gdbreplay*       linux-arm-low.o      linux-mips-low.c    mem-break.o     remote-utils.o  thread-db.c
aclocal.m4      gdbreplay.c      linux-cris-low.c     linux-ppc64-low.c   proc-service.c  server.c        thread-db.o
ChangeLog       gdbreplay.o      linux-crisv32-low.c  linux-ppc-low.c     proc-service.o  server.h        utils.c
config.h         gdbserver*       linux-i386-low.c     linux-s390-low.c    README          server.o        utils.o
config.in       gdbserver.1      linux-ia64-low.c     linux-sh-low.c      reg-arm.c       signals.o
config.log      i387-fp.c        linux-low.c          linux-x86-64-low.c  reg-arm.o       stamp-h
config.status*  i387-fp.h        linux-low.h          Makefile            regcache.c      target.c
configure*      inferiors.c      linux-low.o          Makefile.in         regcache.h      target.h
configure.ac    inferiors.o      linux-m32r-low.c     mem-break.c         regcache.o      target.o
configure.srv   linux-arm-low.c  linux-m68k-low.c     mem-break.h         remote-utils.c  terminal.h  
到此环境搞定了!
接着就是测试了,随便写个函数,保存为hello.c
#include <stdio.h>
int main()
{
int i=0;
i = i + 1;
printf("Result is %d/n", i);
return 0;
}
在写个超级简单的Makefile,内容如下,保存为Makefile
#!/bin/sh
CC = arm-linux-gcc
CFLAGS = -Wall -g
hello: hello.o
$(CC) $(CFLAGS) hello.c -o hello
clean:
rm -f *.o hello Makefile~
在终端输入make编译。
# make
root@chrissie:/home/gdb/app# make
arm-linux-gcc -Wall -g   -c -o hello.o hello.c
arm-linux-gcc -Wall -g hello.c -o hello
# ls 查看一下生成了hello可执行文件,用file看看属性。
# file hello
root@chrissie:/home/gdb/app# file hello
hello: ELF 32-bit LSB executable, ARM, version 1, dynamically linked (uses shared libs), not stripped
其中有ARM表示用于开发板上运行的。
想要在PC机上运行则# make CC=gcc 编译时指定一下编译器即可。
再接着就是pc机和开发板挂载nfs网络了,这也是关键的地方。
方法:在PC机上添加一个nfs用户
# vi /etc/exports 打开文件,并加入一行
/home 192.168.1.*(rw,sync,no_root_squash)
表示将/home共享给192.168.1网段的所有机器,权限为rw(读/写)。
保存,重启一下机器吧~~~
起来后 # ps -ef | grep nfs   查看有nfs进程否?有就ok了,当然还得有
# ps -ef | grep nfslock
# ps -ef | grep portmap
上面三个进程都有后可以了。。。
我的虚拟机ip是192.168.1.223
开发板的ip是192.168.1.225
当然ip只要在一个网段即可。
将防火墙都关了,然后用ping命令互相ping通!
在开发板上输入命令:
# mount -t nfs 192.168.1.223:/home /mnt
说明一下,192.168.1.223是主机ip(即pc虚拟机),/home目录是exports文件中说明要共享的pc机端目录,/mnt是将/home挂载到开发板的mnt目录下,换其他的都行。
成功挂载后能在mnt下看到home中的东西了。
最后,就是正式调试了,将gdbserver和hello放到home里共享给开发板。
在开发板端输入命令:# ./gdbserver 192.168.1.223:1234 hello 
这是pc机的ip       这是要调试的arm程序     端口号随便指定。
在虚拟机PC端:# arm-linux-gdb hello (要在当前有hello的文件夹中执行该命令)
root@chrissie:/home/gdb/app# arm-linux-gdb hello
GNU gdb 6.4
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "--host=i686-pc-linux-gnu --target=arm-linux"...
(gdb)
接下来在当前gdb中输入命令:target remote 192.168.1.225:1234 (注:端口号1234要和前面的一致!)
这个ip是开发板的
(gdb) target remote 192.168.1.225:1234
Remote debugging using 192.168.1.225:1234
0x40000dd0 in ?? ()
(gdb)
这是就可以调试了,用c运行,b 加断点,l 查看代码。。。。。
调试结果都在开发板终端打印。
好了!over!

utu2440 gdbserver 搭建相关推荐

  1. Eclipse-cdt 配合 gdbserver 进行 arm 程序远程调试

     做嵌入式Linux开发也不用再羡慕windows程序员VS集成开发环境的强大,我们同样能够搭建出给力的IDE. 今天在这里记录一下我使用Eclipse-cdt,gdb,gdbserver搭建 ...

  2. 基于hisilicon的arm平台搭建gdb+gdbserver调试环境

    这段时间搭建了一个基于hisilicon的arm平台搭建gdb+gdbserver调试环境,网上对hisilicon平台的搭建资料不多,基本上是arm-linux-gdb的,而没有arm-uclibc ...

  3. 交叉调试 arm linux,搭建交叉调试环境Arm-Linux-Gdb与gdbserver

    操作系统:Ubuntu9.04 开发板:博创2410s 交叉编译工具:arm-linux-gcc-4.1.1 gdb+gdbserver 是调试目标板的常用方法. 网络环境如下:HOST 192.16 ...

  4. linux 搭建开发stm32 stlink,Ubuntu下搭建stm32+stlink的开发环境

    Ubuntu下搭建stm32+stlink的开发环境 热度 3已有 15960 次阅读2014-8-19 21:09 | 上周因为忙于别的事情,很久没切到ubuntu下了,这周继续弄了弄. 弄到了一些 ...

  5. 安装目录opencv for android 教程(环境搭建篇)

    这几周朋友几篇文章介绍了改安装目录的文章. 关联文章的地址 最近android开发异常炽热,随着手机性能越来越高,图像处程序也越来越重要, 由于opencv for android 网上教程大多为英文 ...

  6. 交叉编译和交叉调试环境的搭建及使用

    1. 交叉编译器 1.1 交叉编译器介绍 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译.这个编译过程就叫交叉编译.简单地说,就是在一个平台上生成 ...

  7. android4 设置栈大小,【技术分享】Android内核漏洞利用技术实战:环境搭建栈溢出实战...

    [技术分享]Android内核漏洞利用技术实战:环境搭建&栈溢出实战 2017-08-14 16:22:02 阅读:0次 预估稿费:300RMB 投稿方式:发送邮件至linwei#360.cn ...

  8. jlink怎么调试linux程序_纯Linux下的 ARM裸机调试环境搭建(GDB + JLink)

    一直想摆脱windows环境,在纯linux下进行arm裸机开发,但是由于一直不知道JLink如何在linux下运行和配置,一直无法进行下去. 以前都是windows+AXD调试.包括本人用的FL24 ...

  9. 交叉编译和交叉调试环境搭建及使用

    From: http://blog.chinaunix.net/uid-25119314-id-226230.html 1. 交叉编译器 1.1 交叉编译器介绍 在一种计算机环境中运行的编译程序,能编 ...

最新文章

  1. React typescript issue
  2. oracle ORA-00119和ORA-00132解决方法
  3. mysql as 后面字段_mysql 字段as详解及实例代码
  4. Oracle数据库迁移后变慢,迁移数据之后,读取数据库变得很慢
  5. 业务编排可视化_微服务设计-服务组合和可视化编排思考
  6. BGP邻居建立及路由传递/解决BGP数据层面路由黑洞实验
  7. 用户自定义变量、系统变量、环境变量
  8. 淘宝开源Web服务器Tengine简介
  9. 2022年低压电工考试题及在线模拟考试
  10. 神经网络简介及简单应用
  11. 基于MK802 MiniPC的扩展开发应用-软/硬件修改和扩展
  12. 人行征信报告介绍(一)
  13. 英文word文件怎样全篇翻译成中文?
  14. tshark抓包小结
  15. 郑莉版java第三章答案_java语言程序设计(郑莉)第七章课后习题答案.docx
  16. 成熟男人的处事说话技巧
  17. 旅游管理系统-JAVA【数据库设计、源码、开题报告】
  18. keras基于CNN和序列标注的对联机器人
  19. 电子合同能否取代纸质合同的地位?
  20. Java基础篇之什么是BufferedReader

热门文章

  1. Javascript基础进阶(十六)JS中面向对象的理解、继承、封装、多态
  2. toamct启动超市_群创发布可卷曲AM Mini LED屏对抗OLED
  3. quartz的触发器CronTriggerBean配置
  4. 变频电源输出流程简介
  5. 黄宏生的轨迹有乔布斯和玛莎的影子
  6. 当房奴这么痛苦,为什么很多年轻人还贷款买房?
  7. SAP FI 系列 (026) - 增值税的配置
  8. Netty教程06:netty实现群聊私聊
  9. css中两行图片整齐排布,css 标题一行图片 两行文字的排列方法以及相关问题处理...
  10. H3C路由器OSPF和RIP路由引入简单实验