天天看點

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 解壓并配置環境變量

DM8168(385)GDB交叉調試環境搭建一
DM8168(385)GDB交叉調試環境搭建一

1.3 修改代碼 /gdb-7.7/gdb/remote.c

DM8168(385)GDB交叉調試環境搭建一
DM8168(385)GDB交叉調試環境搭建一

1.4 配置編譯環境+make+make install

[email protected]:/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

[email protected]:/home/gdb-7.7# make

DM8168(385)GDB交叉調試環境搭建一

[email protected]:/home/gdb-7.7# make install

DM8168(385)GDB交叉調試環境搭建一

在/usr/local/arm-a8/bin下檢視

DM8168(385)GDB交叉調試環境搭建一

至此我們在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

DM8168(385)GDB交叉調試環境搭建一

進入/usr目錄查找

DM8168(385)GDB交叉調試環境搭建一

第一個即為我們所找。于是:找到源檔案linux-arm-low.c 129行修改如下:

include “/usr/include/i386-linux-gnu/sys/reg.h”

然後再次編譯

DM8168(385)GDB交叉調試環境搭建一

注:如果編譯不過去,make clean一下再試,此時出現如下兩個檔案:

DM8168(385)GDB交叉調試環境搭建一

至此在開發闆上運作的調試伺服器制作完成。

3. 調試實戰

3.1 nfs挂載,下載下傳到開發闆上(gdbserver與gdbreplay)

3.2 PC端寫一個小程式,進行調試

源檔案:

#include <stdio.h>

int sum(int n)
{
    int  res=;

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

    return  res;
}

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

Makefile檔案:

#
sum:sum.o
    arm-arago-linux-gnueabi-gcc -g  -o [email protected] $^
%.o:%.c
    arm-arago-linux-gnueabi-gcc -g -c $^

clean:
    rm -rf *.o *~ 
    rm -rf sum 
           
DM8168(385)GDB交叉調試環境搭建一

3.3 登入開發闆與PC nfs共享目錄,執行

[email protected]:/mnt/gdb_debug# gdbserver 192.168.1.3:1234 sum

注意:gdbserver和gdbreplay必須放于此目錄,運作正确會提示監聽端口(如下圖)。

3.4 在PC端共享目錄執行

[email protected]:/home/dm385_sdk/bsp_share/gdb_debug# arm-arago-linux-gnueabi-gdb sum

我擦,居然提示有錯誤,發現是Python2.6的庫找不到。

DM8168(385)GDB交叉調試環境搭建一

然後去/usr/lib中查找,發現确實沒有2.6的,之後2.7的,怎麼破?對,軟連接配接,如下圖:

DM8168(385)GDB交叉調試環境搭建一
DM8168(385)GDB交叉調試環境搭建一

然後再次執行gdb,發現OK。遠端連接配接目标闆:

target remote 192.168.1.8:1234

DM8168(385)GDB交叉調試環境搭建一

整個調試過程如下:

DM8168(385)GDB交叉調試環境搭建一

繼續閱讀