linux學習之C語言(3) gdb

2021-06-25 16:12:56 字數 2900 閱讀 2009

除錯程式要用到gdb這個除錯工具,gdb是gnu開源組織發布的乙個強大的unix下的程式除錯工具。

一般來說,gdb主要幫助你完成下面四個方面的功能:

1、啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。

2、可讓被除錯的程式在你所指定的調置的斷點處停住。(斷點可以是條件表示式)

3、當程式被停住時,可以檢查此時你的程式中所發生的事。

4、動態的改變你程式的執行環境。

那麼該如何使用gdb 這個強大的除錯工具來除錯自己的程式呢?

首先,在編譯時需要加上-g或-ggdb選項。

接著,使用格式 gdb filename 來呼叫gdb 或直接在終端輸入gdb來進入除錯模式。

最後,利用gdb除錯選項,進行一系列的操作,直到滿足你的要求,找到程式中的錯誤,了解程式的執行過程。

當然了,gdb除錯選項有很多,下面羅列一些比較常用的。

gdb 常用命令:

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

run     ------ 執行當前被除錯的程式              

kill     ------ 終止正在除錯的程式               

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

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

break ------在**裡設定斷點,這將使得程式在執行到這裡時被掛起

print --------列印表示式或變數的值,或列印記憶體中某個變數開始的一段連續區域的值,還可以用來對變數進行賦值。

display -----設定自動顯示的表示式或變數,當程式停止或在單步跟蹤時,這些變數會自動顯示其當前值 。

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

quit ----------退出gdb

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

backtrace---- 回溯跟蹤

frame n ----- 定位到發生錯誤的**段, n為backtrace命令的輸出結果中的行號

examine ----- 檢視記憶體位址中的值

jump ---------- 使程式跳轉執行

signal --------   產生訊號量

return --------  強制函式返回

call ------------ 強制呼叫函式

make ---------- 使用記不退出gdb就可以重新產生可執行檔案

shell ----------- 使使用者不離開gdb就可以執行shell命令。

下面對上面的命令中一些重要的命令,給出具體的用法

break 命令用法:

break 在進入指定函式時停住

break 在指定行號停住

break +offset                  在當前行的前面offset行停住

break -offset                   在當前行的後面offset行停住

break filename:linenum    在指定檔案的的指定行停住

break filename:function      在指定檔案的指定函式處停住

break  *address             在程式執行記憶體中指定位址處停住

break                                在下條命令處停住

break if 在條件成立時停止

display相關gdb命令:

undisplay  刪除自動顯示

delete display 刪除自動顯示

disable display 不刪除自動顯示,只是讓其失效

enable display 不刪除自動顯示,只是讓其恢復

info display                           檢視display設定自動顯示的資訊

檢視源程式:

list 列出指定行周圍的源程式

list 列出指定函式的源程式

list                       列出當前行前後的源程式

liset -                  列出當前行前面的源程式

list +                     列出當前行後面的源程式

set listsize 設定一次顯示源**的行數

show listsize      檢視當前的listsize 設定

list ,檢視指定的first行到last行的源程式

這些命令很多,使用者也很靈活,當然,不可能都記住,其實這些命令不用記,在用得時候可以看gdb的幫助文件。

注意事項:

1.   上述大多數命令可以使用簡寫,如break 只接輸入b即可,又如,run 直接輸入r即可。

2.    如果希望從斷點處繼續執行程式,輸入c即可

3.    如果希望執行到函式結束,輸入finish

4.    檢視堆疊資訊,輸入bt

5.    檢視麼存,輸入  x/64xh+記憶體位址

6.    刪除斷點,delete break+斷點序號

8     檢視彙編**:disassemble+函式名

對於這麼多的命令,用到時查一下即可。

linux 基本篇 學習筆記(3) gdb除錯

進行gdb除錯是在linux下進行程式開發的常用操作。如 檢視 list 當前檔案 l 非當前檔案 l 行號 斷點操作 break b 設定斷點 b 行號 b 函式名 b 檔名 行號 b檔名 函式名 檢視斷點 info i b 刪除斷點 d num 斷點的編號 刪除多個 d num1 num2 d ...

C語言學習(八)GDB

除錯過程 1 生成可執行檔案時,需要在命令結尾加上 g 標誌可進行除錯 gcc o test main.c g 2 引導程式 gdb test gdb 要除錯的檔名 如果未指定名,則需要在啟動後指定檔案的載入 gdb 不指定檔名 file 檔名 後續載入檔案 3 設定輸入引數 setargs 3 設...

linux下的C語言開發(gdb除錯)

編寫 過程中少不了除錯。在windows下面,我們有visual studio工具。在linux下面呢,實際上除了gdb工具之外,你沒有別的選擇。那麼,怎麼用gdb進行除錯呢?我們可以一步一步來試試看。cpp view plain copy include int iterate int value...