GDB在ARM板中的應用

2022-06-21 06:00:14 字數 2064 閱讀 8014

1.解壓: tar xjf gdb-7.4.tar.bz2

2.編譯gdb和gdbserver

2.1   編譯gdb:

cd gdb-7.4/

.configure -- target=arm-linux  //配置

make //編譯

make install //安裝,注意如果直接執行make install的話,直接撞到pc機的usr/bin中去了。我不想這麼直接安裝,想看看安裝時生成什麼東西?

vi makefile,然後搜尋prefix,這prefix就是指代安裝的路徑。因此我可以自定義我的安裝路徑

mkdir tmp

make install prefix = $pwd / tmp

此時可以去tmp目錄下,看一下都生成了什麼東西。你會看到有bin  include   lib   share目錄。進入bin目錄,你會看到arm-linux-gdb的程式。

2.2  編譯gdbserver

cd gdb / gdbserver

.configure  --host = arm-linux

make

編譯的過程中會出現錯誤:ptrace getsiginfo沒有定義。-i表示標頭檔案在**。在-i指定的標頭檔案中沒有所需要的標頭檔案,怎麼板呢?

注意:標頭檔案除了在-i指定的目錄裡找,還去交叉編譯工具鏈裡面找,交叉編譯工具鏈在哪呢?

echo $path

cd /tools/gcc-3.4.5-glibc-2.3.6/bin

grep "ptrace_getsiginfo"  * -nr,搜尋後發現,該巨集在arm-linux/inluce/linux / ptrace.h中已經定義了,那為什麼提示沒有定義呢?

開啟出錯的檔案:linux-arm-low.c,發現它包含的是include ,因此我們修改為 #include

此時再進行編譯,就不會有任何問題了。最終生成gdbserver

3.  在開發板中使用gdb的原理

我們在pc機裡如何去除錯在arm板中執行的程式呢?帶著這個問題,一步步的向下走。

編譯要除錯的應用程式,編譯時加上-g選項: arm-linux-gcc -g -o test_debug test_debug.c,把編譯出來的test_debug拷貝到開發板上。

除錯:(1)在arm板上

gdbserver  192.168.1.17 : 埠   ./test_debug

注意:此ip位址為arm的ip位址,從這裡可以看出,在使用之前,需要確保arm板和pc機必須ping的通。

埠可以隨便寫,在這裡取2345

(2)在pc機上

arm-linux-gdb  ./test_debug

(gdb) target remote 192.168.1.17 : 2345 (建立pc和開發板的連線)

(gdb) l

你會看到接下來的使用方式和前幾篇部落格中介紹的gdb的使用方法完全相同了

法2:讓程式在開發板上直接執行,當它產生錯誤時,令它產生core dump檔案,將此檔案拷貝到pc機上,在pc機上使用gdb,根據core dump檔案找到程式發生錯誤的地方。

(1)ulimit -c unlimited

(2)在開發板上執行應用程式,程式出錯時會在當前目錄下生成名為core的檔案

./test_debug    (假設這個應用程式有問題)

執行後,會出現segmentation fault (core dump)

注意這是在開發板上得到的core dump檔案,需要將它拷到pc機上。

(3)在pc機上執行:

arm-linux-gdb  ./test_dubug  ./core

在這裡你會看到又進入了(gdb)除錯的介面了。

總結:在嵌入式開發中,我們肯定會去除錯在arm板中執行的程式,本篇部落格就簡單的介紹了如何除錯在開發板上執行的程式。在搭建好環境後,還是會回到gdb除錯程式的介面,這個介面就和之前的gdb使用方法完全一樣了,因此想要高效的除錯嵌入式程式,熟練掌握gdb的基本使用方法是關鍵。

GDB 在arm開發板上的遠端除錯

嵌入式linux的gdb除錯環境由host和target兩部分組成,host端使用arm linux gdb,target board端使用gdbserver。除錯時,應用程式在嵌入式目標系統上執行,而gdb除錯在host端。一 編譯安裝gdb gdbserver 這是我的編寫的編譯指令碼 bin ...

交叉編譯GDB到ARM板

原文 sudo apt get install texinfo sudo apt get install libncurses5 dev sudo apt get install m4 sudo apt get install flex sudo apt get install bison 為了支援...

ARM工控核心板在血液分析儀中的應用

血液分析儀利用探針自動抽取血樣,通過控制主機板的處理得到分析結果。分析結果可在分析儀中儲存 顯示,亦可通過內建印表機直接將各項引數列印後存檔。控制主機板主要功能需求 usb介面,外接u盤 滑鼠,擴充套件usb介面印表機 sd卡,儲存分析結果 乙太網,連線伺服器,實現資料上傳 外部擴充套件匯流排,擴充...