GDB除錯精粹及使用例項

2021-04-26 03:16:46 字數 1168 閱讀 5609

一:列檔案清單

1. list

(gdb) list line1,line2

二:執行程式

要想執行準備除錯的程式,可使用run命令,在它後面可以跟隨發給該程式的任何引數,包括標準輸入和標準輸出說明符()和外殼萬用字元(*、?、[、])在內。

如果你使用不帶引數的run命令,gdb就再次使用你給予前一條run命令的引數,這是很有用的。

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

(gdb)set args –b –x

(gdb) show args

backtrace命令為堆疊提供向後跟蹤功能。

backtrace 命令產生一張列表,包含著從最近的過程開始的所以有效過程和呼叫這些過程的引數。

三:顯示資料

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

(gdb) print p (p為變數名)

whatis 命令可以顯示某個變數的型別

(gdb) whatis p

type = int *

print 是gdb的乙個功能很強的命令,利用它可以顯示被除錯的語言中任何有效的表示式。表示式除了包含你程式中的變數外,還可以包含以下內容:

l 對程式中函式的呼叫

(gdb) print find_entry(1,0)

l 資料結構和其他複雜物件

(gdb) print *table_start

$8=

l 值的歷史成分

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

l 人為陣列

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

base@length

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

(gdb)print h@10

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

四:斷點

GDB除錯精粹及使用例項

gdb除錯精粹及使用例項 一 列檔案清單 1 list gdb list line1,line2 二 執行程式 要想執行準備除錯的程式,可使用run命令,在它後面可以跟隨發給該程式的任何引數,包括標準輸入和標準輸出說明符 和外殼萬用字元 在內。如果你使用不帶引數的run命令,gdb就再次使用你給予前...

GDB除錯精粹及使用例項

一 列檔案清單 1 list gdb list line1,line2 二 執行程式 要想執行準備除錯的程式,可使用run命令,在它後面可以跟隨發給該程式的任何引數,包括標準輸入和標準輸出說明符 和 和外殼萬用字元 在內。如果你使用不帶引數的run命令,gdb就再次使用你給予前一條run命令的引數,...

GDB除錯方法精粹

除錯命令 說明info threads 檢視當前程序的執行緒。gdb會為每個執行緒分配乙個id,後面操作執行緒的時候會用到這個id.前面有 的是當前除錯的執行緒.thread 切換除錯的執行緒為指定id的執行緒。break file.c 100 thread all 在file.c檔案第100行處為...