心得體會
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 ...