嵌入式開發交叉除錯技術簡介
本文主要介紹嵌入式開發環境中使用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函式的日誌輸...