Linux(Ubuntu)下嵌入式gdb调试环境

系统原理课实验要做CMU的Bomblab实验,然而bombg文件在arm架构,因此要配置一个交叉编译/调试环境,曾测试在Ubuntu 15.04下直接安装arm-none-eabi-gdb,然而调试时单步进行会出现IO错误,因此便自己下载了gdb-7.8编译搭建arm-linux-gdb。
一.配置arm-linux-gdb

1.下载gdb  http://ftp.gnu.org/gnu/gdb/

我下载的版本是gdb-7.8

2.安装gdb
<1>解压

#tar xjf gdb-7.8.tar.gz
 <2>进入到解压好的gdb目录中
#cd gdb-7.8/
<3>配置为arm架构
#./configure --target=arm-linux
<4>修改/gdb/remote.c,否则会出现 “Remote 'g' packet reply is too long”错误
把导致异常的代码(line 6065):

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[i].pnum == -1) continue;
        if (rsa->regs[i].offset >= rsa->sizeof_g_packet)
            rsa->regs[i].in_g_packet = 0;
        else
        rsa->regs[i].in_g_packet = 1;
    }
}
  <5>安装libncurses5-dev


#sudo apt-get install libncurses5-dev
<6>编译

#make
  <7>安装
#make install
<8>更改环境变量

#gedit /etc/environment //把arm-linux-gdb加入环境变量 (:/usr/local/arm-gdb/bin)
#source /etc/environment  //更新环境变量


二.连接手机(root后)与配置adb
1.安装adb


#sudo add-apt-repository ppa:nilarimogard/webupd8
#sudo apt-get update
#sudo apt-get install android-tools-adb
2.USB链接目标板/手机


#adb devices
#adb shell
3.将 bomb push 到开发板上

#adb push bombg /data/local
4.网线或无线连接 pc 机和目标板或手机

5.查询手机ip或设置目标板的 ip(在目标板上执行)

#ifconfig eth0 192.168.0.100 (目标板)
#netcfg (手机)

6.查询pc端ip或设置

#ifconfig 

#ifconfig eth0 192.168.0.101
7.目标版或手机开启gdbserver(若无请自行搜索下载或编译)

#gdbserver 192.168.0.101:2345 bombg (ip 为 pc 机机 ip)
8.在 pc 机上调试可执行程序 bombg

#arm-linux-gdb bombg
(gdb) target remote 192.168.0.100:2345 (ip为目标板或手机ip)

至此,应该能够正常进行gdb调试了.


--------------------- 
作者:BlueFissure 
来源:CSDN 
原文:https://blog.csdn.net/BlueFissure/article/details/51193976 
版权声明:本文为博主原创文章,转载请附上博文链接!

你可能感兴趣的:(Android,GDB)