arm 嵌入式下的 gdb 遠端除錯

2021-05-26 15:48:18 字數 2029 閱讀 3679

在編譯之前,首先確定你已經安裝了交叉編譯環境

拷貝 到 /opt 目錄下

2. 解壓到/opt目錄下

#cd /opt

#tar xzvf  gdb-6.8.tar.gz

3. 建立配置檔案、編譯

gdb允許把編譯配置和編譯結果放到任意的目錄,因此可以在gdb目錄之外建立乙個專門存放編譯結果的目錄。

#cd /opt

#mkdir -p arm-gdb/build

#cd arm-gdb/build

#/opt/gdb-6.8/configure

--target=arm-linux --prefix=/opt/arm-gdb

#make

#make install

4.修改path

編譯完後可以在/opt/arm-gdb/bin目錄下找到可執行的arm-linux-gdb, arm-linux-gdbtui, arm-linux--run。

拷貝arm-linux-gdb 到/usr/bin目錄 ,

#cd /opt/arm-gdb/bin/

#cp arm-linux-gdb  /usr/bin/

或者修改path到加入/opt/arm-gdb/bin

#export path=$path:/opt/arm-gdb/bin

把上面加入系統的配置目錄

5. gdbserver的移植 到 開發板上(這個是開發板上執行的)

gdbserver要用到gdb原始碼目錄下的一些標頭檔案,因此無法在gdb原始碼目錄之外編譯檔案。

#cd /opt/gdb-6.8/gdb/gdbserver

#./configure

--host=arm-linux --target=arm-linux --prefix=/opt/arm-gdb/

#make

#make install

注意上面的紅色字,用來設定,這是乙個交叉編譯,使用交叉編譯環境的arm-linux-gcc(當然也可能是其他交叉編譯器)

編譯後,可以在/opt/arm-gdb/bin目錄下找到arm-linux-gdbserver,

在目標板上執行

#chmod +x gdbserver

5. 使用gdbserver

在目標板上執行gdbserver

在目標板上執行

#./gdbserver 192.168.1.1:8000 test 

其中192.168.1.1為目標板的ip。8000為gdbserver開啟的埠,可以自己設定。

# gdbserver 192.168.1.1:8000  test

6. 執行gdb客戶端

root@jesse-desktop:~/test# arm-linux-gdb

(gdb) target remote 192.168.1.1:8000

gdb的基本指令:

load:裝入乙個程式

symbol-file:裝入符號庫檔案,可以是用-g引數編譯的可執行檔案。

f(ile):指定乙個可執行檔案進行除錯,gdb將讀取些檔案的除錯訊息,如f a.exe

l(ist):列程式出原始檔

r(un) :裝載完要除錯的可執行檔案後,可以用run命令執行可執行檔案

b(reak):設定斷點(break point),如b 25,則在源程式的第25行設定乙個斷點,當程式執行到第25行時,就會產生中斷;也可以使用b funcname,funcname為函式的名稱,

當程式呼叫些函式時,則產生中斷

p(rint):輸入某個變數的值,如程式定義了乙個int aa的就是,p aa就會輸出aa的當前值

n(ext):程式執行到斷點時中斷執行,可以用n指令進行單步執行

s(tep):程式執行到斷點時中斷執行,可以用s指令進行單步執行進某一函式

q(uit):退出gdb

Linux Ubuntu 下嵌入式gdb除錯環境

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 ...

Linux Ubuntu 下嵌入式gdb除錯環境

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 ...

嵌入式的gdb除錯

在開發過程中有很多問題如果用gdb進行除錯跟蹤會大大提高效率,但是我發現不少同事對於gdb除錯概念比較模糊,特別是跨平台的除錯,以至於放棄用gdb除錯而影響排除bug的效率。因此我這裡主要對跨平台除錯做乙個簡要的說明。我們對機頂盒上的軟體進行除錯主要有兩種方式,本地除錯和遠端除錯。遠端除錯還有乙個問...