Chinaunix首页 | 论坛 | 博客
  • 博客访问: 400437
  • 博文数量: 112
  • 博客积分: 4535
  • 博客等级: 上校
  • 技术积分: 1120
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-12 10:57
文章分类

全部博文(112)

文章存档

2014年(1)

2013年(1)

2012年(18)

2011年(10)

2010年(16)

2009年(48)

2008年(9)

2007年(9)

我的朋友

分类: LINUX

2007-11-13 09:47:43

一.下载gdb-6.4.tar.gz源代码

二.编译 GDB
#tar zxvf gdb-6.4.tar.gz

2.1 编译GDB Server
#cd gdb-6.4
#./configure --target=arm-linux --prefix=/usr/local/arm-gdb
#make
#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-linux-gcc          //编译用于目标机的stub程序  生成gdbserver是GDB客户端程序,在板子上运行。

三.实战调试
1.编辑文件
# vi gdbtest.c
1 #include 

3 int
4 func(int n){
5     int   sum=0, i;
6     for (i=0; i7         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 gdbtest.c -o gdbtest         // 交叉编译
2.下载文件到目标板: gdbtest和gdbserver
假设 host pc ip:192.168.1.45
     board   ip:192.168.1.180    
将文件拷贝到目标板上:
先将gdbtest和gdbserver两个文件拷贝到主机的/tftpboot目录下
在目标板的Linux中运行:
#mount 192.168.1.108:/tftpboot /mnt/nfs
#cd /mnt/nfs
#ls
看是否有gdbtest和gdbserver两个文件。
3.运行调试
client board:
#./gdbserver 192.168.1.45:1234 gdbtest  // 目标板上运行gdbtest 监听端口1234

host pc:
#cd /usr/local/arm-gdb/bin/
#copy gdbtest /usr/local/arm-gdb/bin/   // 将前面编译的文件gdbtest拷贝到此目录
#./arm-linux-gdb gdbtest
(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本地调试方法相同

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