GDB簡單除錯方法

2021-08-26 12:53:23 字數 1507 閱讀 6317

1. 列檔案清單

列出3到6行**:

2. run執行程式;利用set args 命令就可以修改傳送給程式的引數,而使用show args 命令就可以檢視其預設引數的列表。

3. 設定啟動引數使用命令: set args -st=1

4. 利用print 命令可以檢查各個變數的值。

注:print 是gdb的乙個功能很強的命令,利用它可以顯示被除錯的語言中任何有效的表示式。

表示式除了包含你程式中的變數外,還可以包含以下內容:

a) 對程式中函式的呼叫

(gdb) print find_entry(1,0)

b) 資料結構和其他複雜物件

(gdb) print *table_start

$8=c) 值的歷史成分

(gdb)print $1 ($1為歷史記錄變數,在以後可以直接引用 $1 的值)

d) 人為陣列

人為陣列提供了一種去顯示儲存器塊(陣列節或動態分配的儲存區)內容的方法。早期的除錯程式沒有很好的方法將任意的指標換成乙個陣列。就像對待引數一樣,讓我們檢視記憶體中在變數h後面的10個整數,乙個動態陣列的語法如下所示:

base@length

因此,要想顯示在h後面的10個元素,可以使用h@10:

(gdb)print h@10

$13=(-1,345,23,-234,0,0,0,98,345,10)

4. 斷點設定

利用break命令(可以簡寫為b)在除錯的程式中設定斷點

該命令有如下四種形式:

a) break line-number 使程式恰好在執行給定行之前停止。

b) break function-name 使程式恰好在進入指定的函式之前停止。

c) break line-or-function if condition 如果condition(條件)是真,程式到達指定行或函式時停止。

d) break routine-name 在指定例程的入口處設定斷點

注:從斷點繼續執行,執行countinue 命令(可以簡寫為c)

5. 斷點管理

a) 顯示當前gdb的斷點資訊:

b) 刪除指定的某個斷點

c) 禁止使用某個斷點

d) 允許使用某個斷點

6. 變數的檢查和賦值

a) whatis:識別陣列或變數的型別

b) ptype:比whatis的功能更強,他可以提供乙個結構的定義

c) set variable:將值賦予變數

7. 單步執行

a) next

不進入的單步執行

b) step

進入的單步執行

注:如果已經進入了某函式,而想退出該函式返回到它的呼叫函式中,可使用命令finish。

8. 函式的呼叫

a) call name 呼叫和執行乙個函式

b) finish 結束執行當前函式,顯示其返回值(如果有的話)

9. quit退出gdb程式

gdb: the gnu project debugger

GDB簡單除錯使用方法

如何用gdb執行程式 gcc gdb test.c o gdb test g 編譯程式 gdb r 執行程式 gdb bt full 列印當前的函式呼叫棧的所有資訊 多檔案打斷點 例 對gdb test.c的第三行打斷點 b gdb test.c 3 對多個檔案中的某乙個檔案的函式打斷點 例 b g...

一文看懂gdb簡單除錯

gdb視覺化除錯 gdb tui q 可執行檔案的名字 gdb編譯程式 使用gcc編譯程式生成可執行檔案的命令中,加上 g引數 啟動gdb除錯程式 gdb 可執行程式 退出gdb除錯 在gdb中輸入quit q 命令列傳參 set args gdb檢視源 list l 1 listsize顯示設定 ...

簡單GDB除錯

生成可用gdb除錯的可執行程式 g 會保留原始檔中的函式名和變數名 啟動gdbgdb 可執行程式名 set args 給程式傳參檢視程式中的源 當前檔案 l list l 行號 l 函式名 非當前檔案 l 檔名 行號 l 檔名 函式名 檢視當前可顯示的行數 show listsize 預設是顯示10...