DM8168(385)GDB交叉调试环境搭建一

DM8168(385)GDB交叉调试环境搭建
1.交叉调试器制作(利用gdb-7.7.tar.gz)
1.1 下载GDB源代码
http://ftp.gnu.org/gnu/gdb/
安装gdb-7.7,实际测试 gdb-6.5和gdb-7.5编译过不去,看来选择高版本比较省事.
1.2 解压并配置环境变量
这里写图片描述
这里写图片描述
1.3 修改代码 /gdb-7.7/gdb/remote.c
这里写图片描述
这里写图片描述
1.4 配置编译环境+make+make install
root@ma-ThinkPad-T430:/home/gdb-7.7# ./configure –target=arm-arago-linux-gnueabi –prefix=/usr/local/arm-a8/bin
……
checking whether to enable maintainer-specific portions of Makefiles… no
configure: creating ./config.status
config.status: creating Makefile
root@ma-ThinkPad-T430:/home/gdb-7.7# make
这里写图片描述
root@ma-ThinkPad-T430:/home/gdb-7.7# make install
这里写图片描述
在/usr/local/arm-a8/bin下查看
这里写图片描述
至此我们在PC端使用的GDB交叉调试器制作完成
2. 调试服务器制作
2.1 进入
cd /home/gdb-7.7/gdb/gdbserver
2.2 配置
chmod u+x configure
./configure –target=arm-arago-linux-gnueabi –prefix=/usr/local/arm-a8/bin –host=arm-linux
2.3 编译
make CC=arm-arago-linux-gnueabi-gcc (完了在当前目录生成 gdbserver、gdbreplay 等)
编译过程中出现error: 表示没有头文件reg.h
这里写图片描述
进入/usr目录查找
这里写图片描述
第一个即为我们所找。于是:找到源文件linux-arm-low.c 129行修改如下:
include “/usr/include/i386-linux-gnu/sys/reg.h”
然后再次编译
这里写图片描述
注:如果编译不过去,make clean一下再试,此时出现如下两个文件:
这里写图片描述
至此在开发板上运行的调试服务器制作完成。
3. 调试实战
3.1 nfs挂载,下载到开发板上(gdbserver与gdbreplay)
3.2 PC端写一个小程序,进行调试
源文件:

#include <stdio.h>

int sum(int n)
{
    int  res=0;

    (n>0)&&(res=n+sum (n-1));

    return  res;
}

int main(int argc, char *argv[])
{
    printf("sum(10)=%d\n",sum(10));
    return 0;
}

Makefile文件:

#
sum:sum.o
    arm-arago-linux-gnueabi-gcc -g  -o $@ $^
%.o:%.c
    arm-arago-linux-gnueabi-gcc -g -c $^

clean:
    rm -rf *.o *~ 
    rm -rf sum 

这里写图片描述
3.3 登录开发板与PC nfs共享目录,执行
root@ti81xx:/mnt/gdb_debug# gdbserver 192.168.1.3:1234 sum
注意:gdbserver和gdbreplay必须放于此目录,运行正确会提示监听端口(如下图)。
3.4 在PC端共享目录执行
root@ma-ThinkPad-T430:/home/dm385_sdk/bsp_share/gdb_debug# arm-arago-linux-gnueabi-gdb sum
我擦,居然提示有错误,发现是Python2.6的库找不到。
这里写图片描述
然后去/usr/lib中查找,发现确实没有2.6的,之后2.7的,怎么破?对,软连接,如下图:
这里写图片描述
这里写图片描述
然后再次执行gdb,发现OK。远程连接目标板:
target remote 192.168.1.8:1234
这里写图片描述
整个调试过程如下:
这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章