程式設計師寫在編寫程式的時候不可能是一帆風順的,gcc編譯器可以發現程式**的語法錯誤,但不能發現程式的業務邏輯錯誤,除錯程式是軟體開發的內容之一。除錯程式的方法有很多種,例如可以用printf語句跟蹤程式的執行步驟和顯示變數的值,本章節介紹乙個功能強大的除錯工具gdb。
centos系統中,用root使用者登入伺服器,執行以下命令安裝或公升級。
yum -y install gdb
注意,如果您的伺服器沒有安裝gdb,以上命令就會安裝最新版本的gdb,如果已經安裝了gdb,就會更新到最新版本的gdb,所以,以上命令不管執行多少次都沒有問題。
安裝gdb,前提條件是伺服器必須接入網際網路。
用gcc編譯源程式的時候,編譯後的可執行檔案不會包含源程式**,如果您打算編譯後的程式可以被除錯,編譯的時候要加-g的引數,例如:
gcc -g -o book113 book113.c
在命令提示符下輸入gdb book113就可以除錯book113程式了。
gdb book113
命令命令 縮寫命令說明
set args
設定主程式的引數。 例如:./book119 /oracle/c/book1.c /tmp/book1.c 設定引數的方法是: gdb book119 (gdb) set args /oracle/c/book1.c /tmp/book1.c
break
b設定斷點,b 20 表示在第20行設定斷點,可以設定多個斷點。
runr
開始執行程式, 程式執行到斷點的位置會停下來,如果沒有遇到斷點,程式一直執行下去。
next
n執行當前行語句,如果該語句為函式呼叫,不會進入函式內部執行。
step
s執行當前行語句,如果該語句為函式呼叫,則進入函式執行其中的第一條語句。 注意了,如果函式是庫函式或第三方提供的函式,用s也是進不去的,因為沒有源**,如果是您自定義的函式,只要有原始碼就可以進去。
p顯示變數值,例如:p name表示顯示變數name的值。
continue
c繼續程式的執行,直到遇到下乙個斷點。
set varname=v
設定變數的值,假設程式有兩個變數:int ii; char name[21]; set ii=10 把ii的值設定為10; set name=「西施」 把name的值設定為"西施",注意,不是strcpy。
quit
q退出gdb環境。
注意,在gdb環境中,可以用上下游標鍵選擇執行過的gdb命令。
gdb除錯是程式設計師必須掌握的方法,多嘗試一下,搞清楚每個命令的用法。
C語言gdb除錯
程式設計師寫在編寫程式的時候不可能是一帆風順的,gcc編譯器可以發現程式 的語法錯誤,但不能發現程式的業務邏輯錯誤,除錯程式是軟體開發的內容之一。除錯程式的方法有很多種,例如可以用printf語句跟蹤程式的執行步驟和顯示變數的值,本章節介紹乙個功能強大的除錯工具gdb。centos系統中,用root...
C語言gdb除錯
程式設計師寫在編寫程式的時候不可能是一帆風順的,gcc編譯器可以發現程式 的語法錯誤,但不能發現程式的業務邏輯錯誤,除錯程式是軟體開發的內容之一。除錯程式的方法有很多種,例如可以用printf語句跟蹤程式的執行步驟和顯示變數的值,本章節介紹乙個功能強大的除錯工具gdb。centos系統中,用root...
C語言gdb除錯
程式設計師寫在編寫程式的時候不可能是一帆風順的,gcc編譯器可以發現程式 的語法錯誤,但不能發現程式的業務邏輯錯誤,除錯程式是軟體開發的內容之一。除錯程式的方法有很多種,例如可以用printf語句跟蹤程式的執行步驟和顯示變數的值,本章節介紹乙個功能強大的除錯工具gdb。centos系統中,用root...