Ubuntu 10.04成功移植gdbserver及gdbserver使用介绍

Ubuntu 10.04成功移植gdbserver及gdbserver使用介绍(用于CCSV5.2远程调试ARM CORTEX-A8程序) 。

最近需要使用CCSV5使用gdbserver远程调试ARM cortex-a8的程序,移植成功gdbserve,使用的版本包是gdb-7.1,主机环境为ubuntu10.04,开发板挂载的nfs文件系统。CCSV5已经自带zylincdt,所以只需构建开发板端gdbserver就可以了。下面是详细过程。

1、gdb下载安装
 下载gdb-7.1.tar.bz2至工作目录
 gdb源码下载:
 命令如下:
 $tar -jxvf gdb-7.1.tar.bz2
 $cd gdb-7.1
 $sudo ./configure --target=arm-none-linux-gnueabi --enable-sim --prefix=/home/ss/develop_environment/gdb7.1
 --prefix用于指定安装路径
 $make
 若有错误
 linux-arm-low.c:61:21: error: sys/reg.h: No such file or directory
 make: *** [linux-arm-low.o] 错误 1
 gdb-7.1/gdb/gdbserver/linux-arm-low.c中:
 #ifdef HAVE_SYS_REG_H
 //#include <sys/reg.h>  (注释这一行)
 #endif
 然后再重新make
 $sudo make install
 
完成后可以在/home/ss/develop_environment/gdb7.1下找到arm-linux-gdb文件
 


2、arm-linux-gdbserver的编译安装(gdbserver需要用gdb编译目录下文件所以没有单独发布)
 进入./gdb/gdbserver
 命令如下:
 $cd gdb/gdbserver./configure --target=arm-none-linux-gnueabi --host=arm-none-linux-gnueabi
 $make CC=arm-none-linux-gnueabi-gcc
 (CC=arm-none-linux-gnueabi-gcc用于指定arm-linux编译器)
 编译时若出现PATH_MAX undeclared错误的解决方法:(大部分不出现)
 在hostio.c文件中增加
 #include <linux/limits.h>
 原因是宏PATH_MAX在<limits.h>中没有定义,而是定义在<linux/limits.h>中
 (红色表示我在编译时没有碰到这个错误,此错误是网友整理的,留在这里以供以后参考)
 编译成功后在当前目录下会生成gdbserver文件,拷贝至开发板上(可放入开发板/usr/bin/目录下,这样在任何目录下均可执行gdbserver命令)
 
3、这样编译出来的gdbserver会有问题:
 Remote ‘g’ packet reply is too long “0000000000000000000000000000000000000000000000000000000000000000000000000000000000”
 GDB远程调试错误解决
 使用GDB 7.1版本进行远程调试时出现:Remote ‘g’ packet reply is too long错误,需要修改gdb代码解决,办法是:修改gdb/remote.c文件,注释process_g_packet函数中的下列两行:
 //if (buf_len > 2 * rsa->sizeof_g_packet)
 //error (_(“Remote ‘g’ packet reply is too long: %s”), rs->buf);
 在其后添加:
 
if (buf_len > 2 * rsa->sizeof_g_packet) {
    rsa->sizeof_g_packet = buf_len ;
    for (i = 0; i < gdbarch_num_regs (gdbarch); i++) {
        if (rsa->regs->pnum == -1)
        continue;
        if (rsa->regs->offset >= rsa->sizeof_g_packet)
        rsa->regs->in_g_packet = 0;
        else 
        rsa->regs->in_g_packet = 1;
    }   
 }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/aede1bb37376cab8e829c8eaf6e20ec4.html