Linux c程式設計之gdb的使用

2021-08-30 11:40:26 字數 2209 閱讀 2629

gdb是在linux的控制台視窗下的乙個除錯工具,功能十分強大,今天些簡單的學習一下關於gdb的基本使用

首先,用gcc編譯程式時需要加上-g引數以便獲取除錯資訊

首先要使用gdb除錯程式,在用gcc編譯時要加上-g引數,否則gdb會提示缺少除錯資訊。如下圖:

因此,需要使用如下方法編譯程式:

gcc -g test.c -o test
即加上gcc的-g引數。

接下來,進入gdb除錯

使用如下命令進入gdb以便除錯相關程式,有兩種方式:

直接gdb 加上要除錯的程式名

或者先進入gdb工具,之後再gdb中通過file ./檔名的方式開啟要除錯的程式。

最後,通過gdb的相關命令進行單步除錯程式

先放上本次將要介紹的幾個關鍵字,後面進行具體解釋。

start:如其字面意思一樣,開始程式的除錯,輸入start程式將會從main函式中的第一句開始執行,並停在此處。如圖:

l:即list的意思,列出當前上下5行的**以便檢視。如圖:

n:next,下一步(不進入函式),即順序執行一條語句,若遇到函式將直接執行完整個函式,而不是進入函式內部。後面可以加上需要執行n的次數。

s:step,同樣是順序執行語句,但和n區別是,若遇到函式將進入函式內部,進一步執行函式內部的每一條語句。同樣,數字引數可以控制執行多少次s命令。

until n:n代表行號(或其他位置資訊),即執行程式到第n行。

還可以新增相應位置的斷點,以便快速執行到斷點位置

b 檔名:行號(或函式):breakpoint,b 後加上要新增斷點的檔名和行號,就可以在相應位置上新增斷點,可以使用b i檢視當前所新增的所有斷點,即breakpoint info。b命令還可以新增其他引數,例如指定執行緒的編號,新增條件判斷等,這裡不做過多介紹

完整使用方法如下

break [probe_modifier] [location] [thread threadnum] [if condition]
r:run,使用r命令可以直接讓程式順序執行,直到遇到斷點或者程式結束。

在遇到需要檢視相關變數的資訊時,可以使用p命令

p v:print value,v代表想要檢視的變數名,gdb將會返回相應變數的值並輸出到標準輸出裝置上。

d:delete,使用d可以刪除全部斷點,d 加上相應斷點的編號可單獨刪除某斷點。

bt: backtrace,該命令可以檢視函式棧。、

c:continue,繼續執行程式,當程式執行到斷點處時,可以繼續執行程式,而不是使用run重新執行程式。

watch v: v代表變數名,當變數中的值發生變化時,程式執行停止。

以上就是gdb工具的簡單使用。當然,這只是gdb工具的冰山一角,我們可以通過help all檢視全部的指令,發現其功能還有很多。

若遇到不會的指令,還可以使用help command來檢視幫助資訊。

附:最常用的gdb指令的簡單英文介紹(來自gdb-red hat enterprise linux 7.6.1-110.2018-04-11中的gdb幫助手冊)

Linux C程式設計之 makefile使用

一,示例 四個檔案 main.c main.h t print.c t print.h makefile 寫法1 main main.o t print.o gcc main.o t print.o o main main.o main.c main.h gcc c main.c t print.o...

Linux c 程式設計 GDB除錯

gcc g o 編譯後的檔名 需要編譯的c檔案 如 gcc g o test test.c命令 命令縮寫 命令說明 list l顯示多行源 break b設定斷點,程式執行到斷點的位置會停下來 info i描述程式的狀態 runr 開始執行程式 display disp 跟蹤檢視某個變數,每次停下來...

Linux C程式設計 2 使用GDB除錯入門

此例參考 linux c從入門到精通 一 示例程式 程式功能 輸入年月日後,判斷此日為此年中第幾日。檔名為year.c include int main sum sum day if year 400 0 year 4 0 year 100 0 leap 1 else leap 0 if leap ...