**:感謝博主。
gdb是gnu開源組織發布的乙個unix下的程式除錯工具,專門用來除錯c,c++這些程式的了,而且都是命令列模式的。
平時我們在ide開發得時候,必須在執行的時候選擇debug模式,否則斷點就無效了。因此,在用gcc編譯的時候也是需要一些編譯引數的。
使用gcc編譯時要新增-g選項來把原始碼編譯進去,這樣除錯就可以看到原始碼了,否則除錯很不方便,很多命令用不了。例如:
gcc helloword.c -o helloword -g
gdb helloword //也可以直接執行gdb,再使用命令file引導程式。l命令(list的縮寫,直接list也可以)顯示下10行**,加乙個行號引數則顯示該行號開始的10行**,如:
l 3加兩個引數,則顯示兩個行號之間的**,如:
l 20, 30b(break的縮寫,直接break也可以),可以指定行號,也可以指定函式,例如b 11, 或者break main.
info break(i b也可以)可以檢視當前設定的斷點
clear linenumber 可以刪除指定行的斷點
delete breaknumber 可以刪除指定斷點編號的斷點
r(run的縮寫,也可以直接run)就能跑程式,如果你的程式需要讀取引數,可以在後面新增引數
n(next的縮寫,也可以直接next),執行一行**,就是step over的意思。如果設定有斷點,程式執行停在斷點行,然後輸入n,就可以step over了。
s(step的縮寫,也可以直接step)命令相當於step into, 如果停在了函式行,那麼就可以輸入s,進入該函式了。
p 變數名,就可以列印變數的值了,例如 print a。也可以print 表示式,而且表示式可以修改變數的值。
c(continue的縮寫),相當於ide上面的三角行執行按鈕,直接執行到下乙個斷點或者結束。
bt(backtrace的縮寫,也可以直接backbrace),可以檢視堆疊情況,對於進入某個函式的時候特別有用,可以看到函式引數的值變化。
finish退出函式除錯,還是聽方便的。
info threads可以顯示當前的執行緒,帶星號的是當前除錯的執行緒,即活動執行緒,其他執行緒的輸出結果看不到,必須切換。
thread number可以切換到指定號碼的執行緒進行除錯。
q(quit)退出
help command,help加任何乙個命令就可以看到該命令的所有用法了。
這個需要重新編譯vim,有點麻煩,先用原生的,用熟悉再說
以上是簡單的應用,足夠了,以後遇到問題需要更多的話再去man gdb和看官網
Ubuntu下的GDB除錯
gdb gnu debugger,是gnu工程為gnu作業系統開發的 偵錯程式,但它的使用不侷限於gnu作業系統,gdb可以執行 在unix linux甚至microsoft windows。gdb可以除錯c c objective c pascal ada等語言編 寫的程式 被除錯的程式可以跟gd...
C語言gdb除錯
程式設計師寫在編寫程式的時候不可能是一帆風順的,gcc編譯器可以發現程式 的語法錯誤,但不能發現程式的業務邏輯錯誤,除錯程式是軟體開發的內容之一。除錯程式的方法有很多種,例如可以用printf語句跟蹤程式的執行步驟和顯示變數的值,本章節介紹乙個功能強大的除錯工具gdb。centos系統中,用root...
C語言gdb除錯
程式設計師寫在編寫程式的時候不可能是一帆風順的,gcc編譯器可以發現程式 的語法錯誤,但不能發現程式的業務邏輯錯誤,除錯程式是軟體開發的內容之一。除錯程式的方法有很多種,例如可以用printf語句跟蹤程式的執行步驟和顯示變數的值,本章節介紹乙個功能強大的除錯工具gdb。centos系統中,用root...