在編譯之前,首先確定你已經安裝了交叉編譯環境
拷貝 到 /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的效率。因此我這裡主要對跨平台除錯做乙個簡要的說明。我們對機頂盒上的軟體進行除錯主要有兩種方式,本地除錯和遠端除錯。遠端除錯還有乙個問...