一、 遠端除錯環境由宿主機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 ...