嵌入式系統 GDB除錯

2021-10-10 02:59:22 字數 2061 閱讀 8083

心得體會

gdb :gdb全稱:gnu debugger,是gnu工程為gnu作業系統開發的偵錯程式。它可以用於除錯c、c++、objective-c、pascal、ada等語言編寫的程式。被除錯的程式可以跟gdb執行於同一臺電腦,也可執行於不同電腦。

file 裝入想要除錯的可執行檔案

kill 終止正在進行的除錯程式

list 列出產生執行檔案的源**的一部分

next 執行一行源**但不進入函式內部

step 執行一行源**並可以進入函式內部

run 執行當前被除錯的程式

c 繼續執行程式

quit 終止gdb

watch 使你能監視乙個變數的值而不管它何時被改變

backtrack 棧跟蹤,檢視**被誰呼叫

print 檢視變數的值

make 不用退出gdb,就可以重新生成可執行檔案

shell 不用退出gdb,就可以使用unix shell命令

whatis 顯示變數或者函式型別

break 設定斷點

info break 顯示當前斷點資訊,包含到達斷點處的次數

info files 顯示被除錯檔案的詳細資訊

info func 顯示所有函式名稱

info local 顯示當前的函式的區域性變數

info prog 顯示被除錯程式的執行狀態

delete [n] 刪除第n個斷點

disable [n] 關閉第n個斷點

enable [n] 開啟第n個斷點

ptype 顯示結構定義

set variable 設定變數的值

call name(args) 呼叫並執行為name,引數為args的函式

finish 終止當前函式並輸出返回值

return value 停止當前函式並返回value給呼叫者

gdb的使用條件

程式要用gdb除錯,需要新增除錯資訊。

新增方法:

gcc的-g選項為程式新增除錯資訊。

例如:gcc –g –o hello hello.c

• gdb [程式名]

#include 

void

showrevertnum

(int inum)

printf

("%d\n"

, inum);}

int main

(void

)

此段程式的功能是實現實現整形資料反轉。

2.用gcc編譯,**如下:

3.輸入gdb +檔名啟動gdb,如下:

得到:

4.輸入l顯示**,輸入list顯示主程式:

5.通過行號設定斷點,我設定的是15行,並輸入info b 檢視斷點:

6.通過函式名設定斷點,並輸入info b 檢視所有的斷點:

7.執行程式

8.輸入whatis inum和print inum檢視變數型別和變數內容

9.執行程式,輸入值為123

10.得到結果

通過本次實驗,我基本上掌握了gdb除錯的方法。但還是有很多不足,以後慢慢除錯,慢慢進步。

嵌入式系統偵錯程式gdb

1 gnu計畫的工具 核心除錯kgdb 2 程式的錯誤分類 編譯時錯誤 語法錯誤 執行時錯誤 記憶體錯誤,邏輯錯誤 3 gdb的功能 1.執行程式 2.設定斷點 3。檢視變數值 4 hello.c gcc g hello.c o hello gdb hello 5 使用 tui layout asm...

嵌入式的gdb除錯

在開發過程中有很多問題如果用gdb進行除錯跟蹤會大大提高效率,但是我發現不少同事對於gdb除錯概念比較模糊,特別是跨平台的除錯,以至於放棄用gdb除錯而影響排除bug的效率。因此我這裡主要對跨平台除錯做乙個簡要的說明。我們對機頂盒上的軟體進行除錯主要有兩種方式,本地除錯和遠端除錯。遠端除錯還有乙個問...

Linux Ubuntu 下嵌入式gdb除錯環境

2.安裝gdb 1 解壓 tar xjf gdb 7.8.tar.gz 2 進入到解壓好的gdb目錄中 cd gdb 7.8 3 配置為arm架構 configure target arm linux 4 修改 gdb remote.c,否則會出現 remote g packet reply is ...