gdb和gdbserver的安裝和使用

一、    遠程調試環境由宿主機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。

下載gdb:如果放到了/home/cby目錄:
#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  <host-ip>: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 <target-board-ip>:2345    (我的target-board-ip is 192.168.0.177)
注意:你的端口號必須與gdbserver開啓的端口號一致,這樣才能進行通信。

建立鏈接後,就可以進行調試了。調試在Host端,跟gdb調試方法相同。注意的是要用“c”來執行命令,不能用“r”。因爲程序已經在Target Board上面由gdbserver啓動了。結果輸出是在Target Board端,用超級終端查看。


來自:http://blog.csdn.net/billpig/article/details/5272559

發佈了45 篇原創文章 · 獲贊 10 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章