Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4029245
  • 博文数量: 366
  • 博客积分: 9916
  • 博客等级: 中将
  • 技术积分: 7195
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-29 23:27
个人简介

简单!

文章分类

全部博文(366)

文章存档

2013年(51)

2012年(269)

2011年(46)

分类: 嵌入式

2012-02-21 14:42:49

一.前言
       嵌入式Linux系统中,由于嵌入式系统资源有限,一般不能直接在目标系统上进行调试,通常采用gdb+gdbserver的方式进行调试。gdbserver在目标系统中运行,gdb则在宿主机上运行。目标系统必须包括gdbserver程序,宿主机也必须安装gdb程序。并且不能直接采用linux发行版自带的gdb,需要交叉编译gdb和gdbserver。

二.编译gdb和gdbserver工具
下载最新版本的gdb-6.4.tar.gz,可以到ftp://ftp.gnu.org/gnu/gdb下载.
准备好自己的工作目录,如下示
/tmp/gdb_mipsel
            |--gdb-6.4
            |--obj-gdb
                    |--build
            |--obj-gdbserver
                    |--build
            |--bin
                    
脚本obj-gdb/build内容如下:
#!/bin/sh

../gdb-6.4/configure --target=mipsel --enable-shared --prefix=/opt/mipselgdb --without-x --disable-gdbtk --disable-tui --without-included-regex --without-included-gettext
make

echo "done"


脚本obj-gdbserver/build内容如下:
#!/bin/sh

CC=/opt/buildroot-gcc342/bin/mipsel-linux-uclibc-gcc
../gdb-6.4/gdb/gdbserver/configure --host=mips-linux --without-included-regex --without-included-gettext

echo "done"


开始编译:
(1) cd obj-gdb
    ./build
(2) cd obj-gdbserver
    ./build
    生成Makefile后,添加LDFLAGS= -static,然后make(编译的时候,可能会提示某些文件不存在,则到相应地方mark掉即可)
    
(3) cd bin
    cp ../obj-gdb/gdb/gdb ./mipsel-gdb
    cp ../obj-gdbserver/gdbserver ./
    /opt/buildroot-gcc342/bin/mipsel-linux-uclibc-strip gdbserver
(4) bin目录下就是最终编译出来的gdb+gdbserver


三.gdbserver使用
(1) 目标机
    进入到cssg在终端文件系统中的存放位置,然后执行命令“gdbserver 192.168.1.100:9000 cssg”(注:cssg在编译的时候要加-g选项)
(2) 宿主机
    将mipsel-gdb存放的路径加入到环境变量PATH中,然后进入编译存放cssg源码目录中执行mipsel-gdb cssg,接着再输入命令“target remote 192.168.1.1:9000”(注:该处的端口号必须跟目标机的端口设置一致)
(3) 说明
    目标机IP:192.168.1.1
    宿主机IP: 192.168.1.100
    端口是随意指定的,但两端须保持一致;
    cssg程序两端也必须相同

阅读(3920) | 评论(2) | 转发(2) |
给主人留下些什么吧!~~

txgc_wm2012-02-21 15:52:58

嵌入式软件设计常用的测试工具

  ★源码级调试器[Source-level Debugger]
    这种调试器一般提供单步或多步调试、断点设置、内存检测、变量查看等功能,是嵌入式调试最根本有效的调试方法。比如VxWorks TornadoII提供的gdb就属于这一种。

  ★简单实用的打印显示工具[printf]
    printf或其它类似的打印显示工具估计是最灵活最简单的调试工具。打印代码执行过程中的各种变量可以让你知道代码执行的情况。但是,printf对正常的代码执行干扰比较大(一般printf占用CPU比较长的时间),需要慎重使用,最好设置打印开关来控制打印。

  ★ICE或JTAG调试器[In-circuit Emulator]
    ICE是用来仿真CPU核心的设备,它可以在不干扰运算器的正常运行情况下,实时的检测CPU的内部工作情况。像桌面调试软件所提供的:复杂的条件断点、先

txgc_wm2012-02-21 14:46:31

可以编译通过且运行起来,但还是存在一些问题,大家有什么好的建议,请不吝赐教!