這篇文章主要是示範如何進行遠端除錯,所以請先下載最新版的GDB package version 6.8,我的實驗板是QT2410,toolchain為ELDK(ELDK有內建gdbtui),下載解壓縮完後,請執行下面的shell script,讓編出來的gdb可以support ARM架構,–enable-tui是讓GDB編出圖形化UI debug界面

#! /bin/sh 
./configure --target=arm-linux \
--prefix=/usr/local/eldk/armgdb \
--exec-prefix=/usr/local/eldk/armgdb \
--enable-tui

編譯完後請到gdb/gdbserver資料夾下執行下面的shell script並編譯

#! /bin/sh 
 
export PATH=$PATH:/usr/local/eldk/usr/bin/
export CPPFLAGS="-I/usr/local/eldk/arm/usr/include" 
export LDFLAGS="" 
export CFLAGS="" 
export AR=arm-linux-ar 
export AS=arm-linux-as 
export LD=arm-linux-ld 
export RANLIB=arm-linux-ranlib 
export CC=arm-linux-gcc 
export NM=arm-linux-nm 
export ARCH=arm 
 
./configure --target=arm-linux \
--host=arm-linux \
--build=arm-linux-gnu \
--prefix=/usr/local/eldk/armgdb \
--exec-prefix=/usr/local/eldk/armgdb \

這樣子我們可以得到一個可在2410上執行的gdbserver

先寫個簡單的小程式並編譯它(for example:arm-linux-gcc –ggdb –o hello hello.c),把測試程式丟到板子上再鍵入指令gdbserver 192.168.15.1:12345 hello,你會看到如下gdbserver啟動的畫面

在host端開啟我們編譯出來的gdbtui,可看到如下畫面,並輸入以下指令
(1)target remote 192.168.15.1:12345(連接遠端的gdbserver)
(2) continue到第一個中斷點時set solib-search-path /usr/local/eldk/arm/lib/(設定動態連結庫的位置),因為gdb預設的share library位置與target board相同,所以導致GDB will be unable to debug shared library initializers and track explicitly loaded dynamic code.

詳細的gdbserver與gdb用法請參考此篇文章

最後修改日期: 3 6 月, 2022

作者

留言

撰寫回覆或留言

發佈留言必須填寫的電子郵件地址不會公開。