日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux远程调试程序,嵌入式Linux的GDB远程调试的实现

發布時間:2023/12/31 linux 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux远程调试程序,嵌入式Linux的GDB远程调试的实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

遠程調試環境由宿主機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的源代碼包可以從http:

//ftp.cs.pu.edu.tw/Linux/sourceware/gdb/releases/下載,最新版本為gdb-6.4。下載到某個目

錄,筆者下載到自己的用戶目錄:/home/vicky。

下載完后,進入/home/vicky目錄,配置編譯步驟如下:

#tar jxvf gdb-6.4-tar-bz2

#cd gdb-6.4

#./configure --target=arm-linux --prefix=/usr/local/arm-gdb -v

#make

(這一步的時候可能會有問題,提示一個函數中(具體函數名不記得了)parse error,就是unsigned前邊多了一個”}”,你用vi進入那一行把它刪掉就行了。)

#make install

#export PATH=$PATH:/usr/local/arm-gdb

進入gdbserver目錄:

#./configure --target=arm-linux –host=arm-linux

#make CC=/usr/local/arm/2.95.3/bin/arm-linux-gcc

(這一步要指定arm-linux-gcc的位置,可能跟你的不一樣)

沒有錯誤的話就在gdbserver目錄下生成gdbserver可執行文件,把它燒寫到flash的根文件系統分區,或通過nfs mount的方式都可以。只要保證gdbserver能在開發板上運行就行。

面就可以用gdb+gdbserver調試我們開發板上的程序了。在目標板上運行gdbserver,其實就是在宿主機的minicom下,我的red

hat linux裝在vmware下的。我是在minicom下#mount 192.168.2.100:/ /tmp后做的(這里參數-o

nolock可以不加,不加這一步執行得反而更快些),hello和gdbserver都是位于linux根目錄下,把主機根目錄掛在到開發板的/tmp

目錄下。

要進行gdb調試,首先要在目標系統上啟動gdbserver服務。在gdbserver所在目錄下輸入命令:

(minicom下)

#cd /tmp

#./gdbserver 192.168.2.100:2345 hello

192.168.2.100為宿主機IP,在目標系統的2345端口開啟了一個調試進程,hello為要調試的程序。

出現提示:

Process /tmp/hello created: pid=80

Listening on port 2345

(另一個終端下)

#cd /

#export PATH=$PATH:/usr/local/arm-gdb/bin

#arm-linux-gdb hello

(gdb) target remote 192.168.2.223:2345

(192.168.2.223為開發板IP)

出現提示:

Remote debugging using 192.168.2.223:2345

[New thread 80]

[Switching to thread 80]

0x40002a90 in ??()

同時在minicom下提示:

Remote debugging from host 192.168.2.100

(gdb)

連接成功,這時候就可以輸入各種gdb命令如list、run、next、step、break等進行程序調試了。

以上針對通過nfs mount和tftp的方式,只能在主機上調試好后下載到開發板上運行,如果有錯誤要反復這個過程,繁瑣不說,有些程序只能在開發板上調試。所以筆者采用了gdbserver的遠程調試方式。希望對大家調試程序有用!

posted on 2006-11-10 13:23 易道 閱讀(380) 評論(0) ?編輯?收藏 引用 所屬分類: arm嵌入式學習

總結

以上是生活随笔為你收集整理的linux远程调试程序,嵌入式Linux的GDB远程调试的实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。