退出命令: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...