gdb,程式除錯助手

2021-09-07 13:16:55 字數 2619 閱讀 9291

退出命令:quit或者簡寫q

幫助獲取:

可以通過分類名作為help指定的引數來獲得幫助,以斷點(breakpoint)為例:

在gdb除錯中,有幾個注意點可以提高除錯效率,第一,如果輸入的命令開頭字母能唯一標識這個命令,則後面的命令可以不用輸入,例如退出命令quit,只輸入q就已經是唯一標識的命令了,其他命令沒有q開頭的,故,我們可以直接輸入q,然後回車就可以達到輸入quit的作用,第二,gdb中也可以師徒tab補全指令,第三,對於大多數的命令都可以 以直接按回車(enter)的方式執行前面執行過的命令.

現在我們除錯乙個簡單的程式,運用斷點:

1 #include2

int main(void)3

9return0;

10 }

這裡需要解釋幾個命令:

設定斷點,break命令;

我們把斷點設定在main函式的第4行:

main.c:4表示main函式的第四行,這樣寫是有意義的而且是推薦的做法,在多檔案中操作時更清晰.

斷點(breakpoint)

檢視斷點

觀察點(watchpoint) -- 觀察點一般來觀察某個表示式(變數也是一種表示式)的值是否有變化了,如果有變化,馬上停住程式.

檢視觀察點

這樣,我們使用最基本的除錯方法,實現斷點和檢視變數的值,其中next命令(簡寫n)是單挑語句執行,下一步的的意思.

維護停止點

clear -- 所有的已定義的停止點.

clear -- 清除所有設定在函式上的停止點.

clear -- 清除所有設定在函式上的停止點.

clear -- 清除所有設定在指定行上的停止點.

clear -- 清除所有設定在指定行上的停止點.

delete [range] -- 刪除停止點.其簡寫命令為 d.

disable [range] -- 禁用停止點

enable [range] -- 啟用停止點.

enable once [rang] -- 啟用停止點一次,當程式停止後,該停止點馬上被 gdb 自動 disable.

enable count [rang] -- 啟用停止點 count 次,當程式停止後,該停止點馬上被 gdb 自動 disable.

enable delete [rang] -- 啟用停止點一次,當程式停止後,該停止點馬上被 gdb 自動刪除.

condition -- 修改斷點號為bnum的停止條件為expression.

condition -- 清除斷點號為bnum的停止條件.

ignore -- 表示忽略斷點號為 bnum 的停止條件 count 次.

恢復執行

continue [ignore-count] -- ignore-count 表示忽略其後的斷點次數.恢復程式執行,直到程式結束,或是下乙個斷點到來.縮寫 c

fg [ignore-count] -- ignore-count 表示忽略其後的斷點次數.恢復程式執行,直到程式結束,或是下乙個斷點到來.縮寫 c

單步除錯

step -- 單步跟蹤,如果有函式呼叫,它會進入該函式.count 表示執行後面 count 條語句,不加則預設為 1.

next -- 同樣單步跟蹤,如果有函式呼叫,他不會進入該函式.count 表示執行後面 count 條語句,不加則預設為 1

檢視執行時資料

是輸出的格式

注意:printf "fmt",arg,... -- 列印格式化字元燦 fmt.

檢視記憶體

u 表示從當前位址往後請求的位元組數,如果不指定的話,gdb預設是 4 個 bytes.

表示乙個記憶體位址.

更多請參考:

預設的list只是列出了10行,採用show listsize可以檢視當前的顯示**行數,用set listsize count設定list命令顯示的源**數量最多為count行,0表示不限制行數。

step單步的時候,會進入函式,next單步的時候,不會進入函式.

單步除錯的時候,顯示在最前面的那個數字,代表的是這句話在原始檔中的行號.

程式除錯gdb基礎

gcc 編譯器 gcc是linux平台下最重要的開發工具,它是gnu的c和c 編譯器,它總共提供的編譯選項超過100個,但只有少數幾個會被頻繁使用,收集如下。其基本用法為 gcc options filenames 最簡單的編譯方法是不指定任何編譯選項,會為目標程式生成預設的檔名a.out o 為將...

GDB除錯程式

gdb的三個功能 1 啟動被除錯的程式 2 設定斷點 3 設定斷點之後可以檢查程式的狀態 1.編譯生成可執行檔案 注意 g 除錯選項 gcc g tst.c o tst 2.啟動gdb gdb tst 3.在main函式處設定斷點 break main 4.執行程式 run5.利用 更加豐富的 gd...

gdb除錯程式

除錯是每個程式設計師都會面臨的問題.如何提高程式設計師的除錯效率,更好更快地定位程式中的問題從而加快程式開發的進度,是大家共同面對的問題.可能windows使用者順口就會說出 用vc唄 它提供了設定斷點,單步跟蹤等的圖形介面,使除錯起來直觀易用.但linux使用者可能要生悶氣了 o 難道我們linu...