嵌入式gdb gdbserver除錯環境搭建與使用

2021-10-07 15:08:49 字數 2341 閱讀 5926

目錄

一、原理

二、環境搭建

三、除錯過程

四、gdb常用命令

1、l(list)命令

2、b(break)命令

3、c命令

4、s命令

5、n命令

6、 p命令

7、 q命令

嵌入式系統中一般在 pc端執行 gdb工具,原始碼也是在 pc端,原始碼對應的可執行檔案放到開發板中執行。為此我們需要在開發板中執行 gdbserver,通過網路與 pc端的 gdb進行通訊。因此要想在 pc上通過 gdb除錯嵌入式程式,那麼需要兩個東西:gdb和gdbserver,其中 gdb是執行在 pc上的, gdbserver需要我們移植到開發板上。

1、交叉編譯器自帶

安裝目錄:

將gdbserver拷貝到rootfs根檔案系統/usr/bin中:

sudo cp /usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/gdbserver /home/denghengli/linux/nfs/rootfs/usr/bin/
略。。。

1、將原始碼編譯成帶除錯資訊的可執行檔案,然後拷貝到開發板上。比如在ubuntu下編寫了乙個gdbtest.c檔案,編譯完成以後將得到的gdbtest可執行檔案傳送到開發板中

#include #include int main(int argc, char *ar**)

}

編譯:

arm-linux-gnueabihf-gcc gdbtest.c -o gdbtest -g //編譯測試程式,注意 -g選項
拷貝至rootfs根檔案系統下(開發板啟動以後通過nfs服務使用ubuntu下的跟檔案系統):

sudo cp gdbtest /home/denghengli/linux/nfs/rootfs/lib/modules/4.1.15/
2、在開發板中,啟動gdbserver並執行要除錯的執行檔案

gdbserver 192.168.0.107:2000 gdbtest //啟動開發板上的 gdbserver
192.168.0.107為指定的ubuntu主機ip

2000為要開啟除錯的埠,可以隨意指定

gdbtest為除錯的可執行檔案,一定要帶上gdbtest的路徑!!

3、在ubuntu中開啟gdb並連線到開發板上的gdbserver

arm-linux-gnueabihf-gdb gdbtest //啟動gdb除錯

target remote 192.168.0.20:2000 //連線到開發板,192.168.0.20為開發板ip

連線成功後,會提示 remote debugging using 192.168.0.20:2000

將斷點設定在12行處,輸入c執行至斷點,此時程式就會在開發板中執行,並在控制台輸出列印資訊

輸入p列印times資訊,最後輸入q退出除錯,開發板上的 gdbserver也會停止。

列出所有程式原始碼;命令以後就列印出了除錯程式的所有原始碼,如果原始碼沒有列印完的話就重複按下「l」命令,或者按下回車鍵 gdb除錯工具中回車鍵表示重複上乙個命令!

用於設定斷點,後面可以跟具體的函式或者行號

用於執行到斷點處

s命令 (step)是單步執行執行,此函式會進入到函式裡面。

n命令 (next)也是單步執行,但是 n命令不會進入到函式裡面。

p命令 (print)用於列印某個變數值。

q命令 (quit)用於退出除錯,開發板上的 gdbserver也會停止。

嵌入式gdb gdbserver除錯

在很多情況下,需要對應用程式進行除錯。在 linux 下除錯程式,常用的工具是 gdb。由於嵌入式單板的資源有限,一般不直接在目標機上執行 gdb 進行除錯,而是採取 gdb gdbserver 的方式。gdbserver 在目標機中執行,gdb 則在宿主機上執行。根檔案系 統中已經包含 gdbse...

使用gdb gdbserver除錯嵌入式程式

如果環境沒有提供交叉編譯程式gdbserver 可以參考交叉編譯步驟 是我除錯的例子,它在客戶端的執行命令如下.monitorall qws font wenquanyi 1.target 端 gdbserver multi 192.168.1.101 1234 啟動gdbserver,監聽192....

初識嵌入式 嵌入式開發概述

1 什麼是嵌入式技術 1 嵌入式軟體與非嵌入式軟體的區別?答 嵌入式軟體是結合作業系統之上做的開發 非嵌入式軟體是做的裸機開發。裸機 沒有作業系統 2 嵌入式開發與微控制器開發的區別?答 區別 是否有作業系統。拓展 答 優點 解決了軟體的移植性 解決了開發人員的能力的劃分問題。提供了豐富的網路協議 ...