网站首页
IC库存
IC展台
电子资讯
技术资料
PDF文档
我的博客
IC72论坛
ic72 logo
资料首页最新产品 技术参数 电路图 设计应用 解决方案 代理商查询 IC替换 IC厂商 电子辞典
关键字: 技术文章 PDF资料 IC价格 电路图 代理商查询 IC替换 IC厂商 电子辞典

建立嵌入式gdb调试环境

  一、下载gdb-*.tar.gz源代码

  http://ftp.gnu.org/gnu/gdb/

  二、编译 GDB

  #tar zxvf gdb-*.tar.gz

  2.1、编译GDB Server

  #cd gdb-*

  #./configure --target=arm-linux --prefix=/usr/local/arm-gdb

  #make

  注意: 这里如果你用的是gcc-4.3.2的话,编译可能会出错!你可以改成 gcc-4.1 就可以顺利编译通过

  编译ARM用的GDB时出现error: no termcap library found错误的解决方法2009年03月28日 星期六 21:55在Ubuntu下编译gdb时出现如下错误:

  ........

  checking for library containing gethostbyname... none required

  checking for library containing socketpair... none required

  checking for library containing waddstr... no

  checking for library containing dlgetmodinfo... no

  checking for library containing tgetent... no

  configure: error: no termcap library found

  make[1]: *** [configure-gdb] 错误 1

  解决方法:sudo apt-get install libncurses5-dev

  安装完后,在make就OK了!

  #make install // 生成/usr/local/arm-gdb/bin

  2.2、编译GDB Client

  #cd ./gdb/gdbserver

  #export PATH=$PATH:/usr/local/arm-gdb/bin

  #./configure --target=arm-linux --host=arm-linux

  #vi config.h

  //#define HAVA_SYS_REG_H //注释此句

  #make CC=arm-softfloat-linux-gnu-gcc //编译用于目标机的stub程序 生成gdbserver是GDB客户端程序,在板子上运行。

  三、实战调试

  1.编辑文件

  # vi gd^est.c

  1 #include

  2

  3 int

  4 func(int n){

  5      int sum=0, i;

  6      for (i=0; i

  7           sum += i;

  8      }

  9      return sum;

  10 }

  11

  12 int

  13 main(void)

  14 {

  15      int i;

  16      long result = 0;

  17      for (i=0; i<=100; i++){

  18            result += i;

  19      }

  20

  21      printf("result[1-100] = %d \n", result);

  22      printf("resutl[1-225] = %d \n", func(255));

  23

  24      return 0;

  25 }

  # arm-linux-gcc -g gd^est.c -o gd^est // 交叉编译

  2.下载文件到目标板: gd^est和gdbserver

  假设 host pc ip:192.168.1.45

  board ip:192.168.1.180

  将文件拷贝到目标板上:

  先将gd^est和gdbserver两个文件拷贝到主机的/tftpboot目录下

  在目标板的Linux中运行:

  #mount 192.168.1.108:/tftpboot /mnt/nfs

  #cd /mnt/nfs

  #ls

  看是否有gd^est和gdbserver两个文件。

  3.运行调试

  client board:

  #./gdbserver 192.168.1.45:1234 gd^est // 目标板上运行gd^est *端口1234

  host pc:

  #cd /usr/local/arm-gdb/bin/

  #copy gd^est /usr/local/arm-gdb/bin/ // 将前面编译的文件gd^est拷贝到此目录

  #./arm-linux-gdb gd^est

  (gdb)target remote 192.168.1.180:1234 // 连接到开发板 成功后就可以进行调试

  (gdb)list or l

  (gdb)break func

  (gdb)break 22

  (gdb)info br

  (gdb)continue or c // 这里不能用 run

  (gdb)next or n

  (gdb)print or p result

  (gdb) finish // 跳出func函数

  (gdb) next

  (gdb) quit

  建立连接后进行gdb远程调试和gdb本地调试方法相同。

热门搜索:B40-8000-PCB EURO-4 2804623 PS361206 BT05-F250H-03 SBB1602-1 2762265 2320306 2838319 SBB400 UL17CB-15 SS361220 2882828 LED12-C2 2811271 2838283 SBB830 2320335 TRAVELER3USB PS240406 CC2544RHBR 02C1001JF BT152-500R/600R RBC11A TLP76MSG
COPYRIGHT:(1998-2010) IC72 达普IC芯片交易网
客户服务:service@IC72.com 库存上载:IC72@IC72.com
(北京)联系方式: 在线QQ咨询:点击这里给我发消息 联系电话:010-82614113 传真:010-82614123
京ICP备06008810号-21 京公网安备 11010802032910 号 企业资质