天天看點

GDB 程式調試簡單實踐

用了好久的GCC/G++ 卻一直都沒用過GDB調試過程式,有時程式不是非常大,一般有錯,直接看編譯器編譯結果就幾乎相同知道錯在哪兒了,或者使用codeblocks單步調試,甚至回到windows以下調試,可是總是不太友善,是以有必要看一下GDB調試方法和基本步驟.

以下是一個簡單的示範:

首先建立一個有錯誤的代碼,例如以下:

GDB 程式調試簡單實踐

這個程式非常easy,目的是接受使用者的輸入,并将使用者的輸入回應輸出來.

可是這個程式的第17行有個錯誤,使用了未初始化的字元指針name,是以編譯執行後會出現段錯誤,例如以下:

GDB 程式調試簡單實踐

以下利用GDB 工具查找該程式中的出現的問題,過程例如以下:

FIR:

執行gdb bug指令,裝入上面的可執行檔案:

GDB 程式調試簡單實踐

使用list指令(或者l)指令檢視代碼:

GDB 程式調試簡單實踐

使用run指令:

GDB 程式調試簡單實踐

輸出三行結果:

1:出現段錯誤

2:提示錯誤的位置

使用where指令檢視程式出錯位置:

GDB 程式調試簡單實踐
GDB 程式調試簡單實踐

以上資訊說明gets函數出錯,從代碼能夠看出,唯一可能出錯的是name變量,是以通過print指令檢視name變量:

GDB 程式調試簡單實踐

由此可知,出錯的原因是使用了未初始化的變量name.

退出gdb.

GDB 程式調試簡單實踐

簡單的示範了一下.詳細的其它的調試手段見興許.

繼續閱讀