嵌入式開發交叉除錯技術簡介

2021-08-31 15:18:22 字數 2550 閱讀 8889

嵌入式開發交叉除錯技術簡介

本文主要介紹嵌入式開發環境中使用gdb交叉除錯的大體過程。

在後面例子中給出了針對qtextend環境中使用交叉除錯的最簡步驟。

主要內容:

一、嵌入式中的交叉除錯

二、交叉除錯舉例

三、其他

一、嵌入式中的交叉除錯

*************************===

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

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

#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下,我的 redhat 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(這裡我沒有加這個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 ??()

remote debugging from host 192.168.2.100

(gdb)

連線成功,這時候就可以輸入各種gdb命令如list、run、next、step、break等進行程式除錯了。

二、交叉除錯舉例

*************************===

以上資料源於csdn,內容比較全面但是也比較多,下面通過乙個針對qtextended開發環境下的,簡單例子,對其過程進行演示。其他開發環境過程也類似。

大致步驟如下:

1)qbuild.pro中新增如下:

config+=debug

這一步是qtextended新增除錯標記用的,如果你的程式不是qtextended,那麼使用"gcc -g"開啟除錯選項進行編譯即可。

2)開發板子中:

3)開發主機中:

4)最後執行如下即可開始除錯:

(gdb)target remote 192.168.100.200:22222

這裡192.168.100.200是開發板子ip。

三、其他

*************************===

有問題聯絡:

email:[email protected]

日期:2023年2月24日

嵌入式除錯技術

嵌入式除錯方法 1.模擬器。比如qtopia core可以用奇趣提供的frame buffer模擬工具qvfb,arm硬體模擬可以用skyeye開源專案。2.遠端除錯。偵錯程式還在pc上,偵錯程式與被除錯的程式通過網路通訊。3.通過log和core dump等檔案事後分析。stdprm標準印表機lp...

嵌入式Linux除錯技術

嵌入式除錯方法 1.模擬器。比如qtopia core可以用奇趣提供的frame buffer模擬工具qvfb,arm硬體模擬可以用skyeye開源專案。2.遠端除錯。偵錯程式還在pc上,偵錯程式與被除錯的程式通過網路通訊。3.通過log和core dump等檔案事後分析。大多數開發人員認為kgdb...

嵌入式linux除錯技術

android模擬器只能通過埠對映的方式使用kgdbserver除錯程式。但開發板除了可以通過ip連線到kgdbserver外還可以通過串列埠進行連線。開發板同樣也帶了kgdbserver程式,可直接執行。大多數開發人員認為kgdb是最好的核心除錯工具。kgdb除了提供類似的printk函式的日誌輸...