C語言gdb除錯

2021-10-04 07:09:08 字數 1383 閱讀 3166

程式設計師寫在編寫程式的時候不可能是一帆風順的,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也是進不去的,因為沒有源**,如果是您自定義的函式,只要有原始碼就可以進去。

print

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...