操作系统:ubuntu10.04 

微处理器:S5PV210 



前言: 

    在嵌入式开发中,调试总是个大难题,gdb,gdbserver调试器可以有效解决这个问题。 

     


1,下载安装 

     
a,到这个地址去下载最新版本的gdb:http://ftp.gnu.org/gnu/gdb/ 

        当前下载到最新版本的gdb为 gdb-7.7.tar.bz2。 


     
b,复制下载好的文件到linux操作系统中。 

         
(1),pc机上的gdb 

         
<1>解压 

            tar xjf gdb-7.7.tar.bz2 

     

         
<2>进入到解压好的gdb目录中 

            cd gdb-7.7/ 


         
<3>配置为arm架构 

            ./configure --target=arm-linux 


         
<4>修改源码,否则会出现 “Remote 'g' packet reply is too long”,错误 

            把导致异常的代码:<gdb-7.7/gdb/remote.c> 
此处)折叠或打开
 
 
1. if (buf_len > 2 * rsa->sizeof_g_packet)
2.     error (_("Remote 'g' packet reply is too long: %s"), rs->buf);
 
            修改为: 

此处)折叠或打开
 
 
1. if (buf_len > 2 * rsa->sizeof_g_packet)
2. {
3. ->sizeof_g_packet = buf_len ;
4. for (i = 0; i < gdbarch_num_regs (gdbarch); i++)
5. {
6. if (rsa->regs[i].pnum == -1) continue;
7. if (rsa->regs[i].offset >= rsa->sizeof_g_packet)
8. ->regs[i].in_g_packet = 0;
9. else
10. ->regs[i].in_g_packet = 1;
11. }
12. }
 

         
<5>执行makefile文件 

            make 


         
<6>在 
gdb-7.7/目录下创建一个tmp文件夹,用以保存将要生成的所需的文件,否则将要生成的文件会放在/usr/local文件夹中。
             mkdir tmp/ 


         
<7 
>生成所需arm-linux-gdb可执行文件,/tmp/bin/文件夹下的arm-linux-gdb 就是所需的文件
             make install prefix=$pwd/tmp 


         
<8>把tmp/bin/arm-linux-gdb 文件复制到/bin文件夹下 

            cp  
tmp/bin/arm-linux-gdb  /bin


         (2),在pc机上生成开发板需要的gdbserver文件
         <1>进入到 gdb-7.7/gdb/gdbserver
             cd gdb/gdbserver

         <2>配置为arm架构
             ./configure --target=arm-linux --host=arm-linux 
 

      
         <3>执行makefile文件,生成所需文件,在gdb-7.7/gdb/gdbserver中
             make CC=arm-linux-gcc  

         <4>把生成的gdbserver文件拷贝到开发板中linux的文件系统的 /bin文件夹中


2,实例
     1,源码
 
此处)折叠或打开 <first.c>
 
 
1. #include <stdio.h>
2.  
3. int main(int argc,char*argv[])
4. {
5. int i = 10;
6. ("hello real210!!!\n");
7.  
8. ("value : %d\n",i );
9.  
10.  
11. = 20;
12. ("value : %d\n",i );
13.  
14. ;
15. }
 

      
2,在pc上使用arm-linux-gdb编译要运行于开发板的文件 

          
<1>编译         

             arm-linux-gdb  first.c  -g -o f       


          
<2>把生成的f文件复制到开发板的某个路径下,使用gdbserver调试
             gdbserver 192.168.1.24:2345    ./f
         
           注:192.168.1.24为pc机的ip地址,2345为端口号,随意。 
   


          
<3>在pc机上调试开发板中的./f程序 

             arm-linux-gdb ./f 


             然后再连接到开发板(注:192.168.1.20为开发板的ip地址, 
端口号为2345,与gdbserver匹配) 

             target remote 192.168.1.20:2345 


          
<4>现象

            

开发板:


            

arm架构主机安装ansible arm架构安装linux_文件复制



           

 pc机:


            

arm架构主机安装ansible arm架构安装linux_linux_02


            

arm架构主机安装ansible arm架构安装linux_linux_03


            

arm架构主机安装ansible arm架构安装linux_linux_04


            

arm架构主机安装ansible arm架构安装linux_文件复制_05