gdb和gdbserver的安裝和使用

2021-06-07 01:24:10 字數 1943 閱讀 5885

一、    遠端除錯環境由宿主機gdb和目標機除錯stub共同構成,兩者通過串列埠或tcp連線。使用gdb標準遠端序列協議協同工作,實現對目標機上的系統核心和上 層應用的監控和除錯功能。除錯stub是嵌入式系統中的一段**,作為宿主機gdb和目標機除錯程式間的乙個媒介而存在。

就目前而言,嵌入式 linux系統中,主要有三種遠端除錯方法,分別適用於不同場合的除錯工作:用rom monitor除錯目標機程式、用kgdb除錯系統核心和用gdbserver除錯使用者空間程式。這三種除錯方法的區別主要在於,目標機遠端除錯stub 的存在形式的不同,而其設計思路和實現方法則是大致相同的。

而我們最常用的是除錯應用程式。就是採用gdb+gdbserver的方式進行除錯。在很多情況下,使用者需要對乙個應用程式進行反覆除錯,特別是複雜的程式。採用gdb方法除錯,由於嵌入式系統資源有限性,一般不能直接在目標系統上進行除錯,通常採用gdb+gdbserver的方式進行除錯。gdbserver在目標系統中執行,gdb則在宿主機上執行。

要進行gdb除錯,目標系統必須包括gdbserver程式,宿主機也必須安裝gdb程式。一般linux發行版中都有乙個可以執行的gdb,但開發人員不能直接使用該發行版中的gdb來做遠端除錯,而要獲取gdb的源**包,針對arm平台作乙個簡單配置,重新編譯得到相應gdb。

#cd /home/cby

#tar zxvf gdb-6.6.tar.gz

#cd gdb-6.6

#./configure --target=arm-linux --prefix=/home/cby/arm-gdb

#make

#make install

然後建立gdbserver:

#mkdir /home/cby/gdbserver

#cd ../gdbserver

#chmod +x /home/cby/gdb-6.6/gdb/gdbserver/configure

#cc=arm-linux-gcc ../gdb-6.6/gdb/gdbserver/configure /

--host=arm-linux  --prefix=/home/cby/gdbserver

#make

#make install

#arm-linux-strip gdbserver

#cp gdbserver /tftpboot

二、除錯步驟

1、交叉編譯,帶引數-gstabs 或 -g 加入除錯資訊。

假設要除錯的程式為hello.c。

#arm-linux-gcc -g hello.c -o hello

2、在target board開啟gdbserver

#gdbserver  :2345 hello   (我的host-ip是192.168.0.178)

gdbserver開始監聽2345埠(你也可以設其他的值),然後啟動hello,你會看到「process test created:pid=88」

3、回到host端

#export path=$path:/home/cby/arm-gdb/bin(arm-linux-gdb的路徑)

#arm-linux-gdb hello

最後一行顯示:this gdb was configured as 「--host=i686-pc-linux-gnu,--target=arm-linux」...

說明此gdb在x86的host上執行,但是除錯目標是arm**。

(gdb)target remote :2345    (我的target-board-ip is 192.168.0.177)

注意:你的埠號必須與gdbserver開啟的埠號一致,這樣才能進行通訊。

建立鏈結後,就可以進行除錯了。除錯在host端,跟gdb除錯方法相同。注意的是要用「c」來執行命令,不能用「r」。因為程式已經在target board上面由gdbserver啟動了。結果輸出是在target board端,用超級終端檢視。

來自:

gdb和gdbserver的安裝和除錯

嵌入式linux的gdb除錯環境由host和target兩部分組成,host端使用arm linux gdb,target board端使用gdbserver。除錯時,應用程式在嵌入式目標系統上執行,而gdb除錯在host端。gdb除錯的時候,pc機上的gdb向開發板上的gdbserver發出命令,...

使用GDB和GDBServer除錯程式

2019年02月26日 10 26 55 siemens xp 閱讀數 61 硬體平台,ti am3352 目標板ip192.168.0.15 宿主機ip 192.168.0.55 軟體平台,ubuntu 交叉編譯器 arm linux gnueabihf gcc 選擇版本為gdb 7.7.1 ta...

交叉編譯gdb與gdbserver

一 編譯gdb 543 cd home rock pkg gdb 7.3.1 544 mkdir build 553 configure host i686 pc linux gnu target arm linux prefix home rock pkg gdb 7.3.1 build 554 ...