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 解壓并配置環境變量
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISOxkDM0YTN5ADNycDM1EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
1.3 修改代碼 /gdb-7.7/gdb/remote.c
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
[email protected]:/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=;
(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
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的庫找不到。
然後去/usr/lib中查找,發現确實沒有2.6的,之後2.7的,怎麼破?對,軟連接配接,如下圖:
然後再次執行gdb,發現OK。遠端連接配接目标闆:
target remote 192.168.1.8:1234
整個調試過程如下: