一、列檔案清單
list / l
列出產生執行檔案的源**的一部分
//列出 line1 到 line2 行之間的源** (gdb) list line1, line2 //輸出從上次呼叫list命令開始往後的10行程式** (gdb) list //輸出第 n 行附近的10行程式** (gdb) list n //輸出函式function前後的10行程式** (gdb) list function
二、執行程式
run / r
執行準備除錯的程式,在它後面可以跟隨發給該程式的任何引數,包括標準輸入和標準輸出說明符(《和》)和shell萬用字元(*、?、[、])在內。
如果你使用不帶引數的run命令,gdb就再次使用你給予前一條run命令的引數,這是很有用的。
set args
命令就可以修改傳送給程式的引數,而使用
show args
命令就可以檢視其預設引數的列表。
(gdb) set args –b –x(gdb) show args
三、顯示資料
print / p
檢視變數的值
//利用print 命令可以檢查各個變數的值。
(gdb) print p (p為變數名)
print 是 gdb 的乙個功能很強的命令,利用它可以顯示被除錯的語言中任何有效的表示式。表示式除了包含你程式中的變數外,還可以包含以下內容:
//對程式中函式的呼叫
(gdb) print find_entry(1, 0)
//資料結構和其他複雜物件
(gdb) print *table_start
$8=//值的歷史成分
(gdb)print $1 ($1為歷史記錄變數,在以後可以直接引用 $1 的值)
whatis
檢視變數的型別
//whatis 命令可以顯示某個變數的型別
(gdb) whatis p
type = int *
四、設定與清除斷點
break / b
可以用來在除錯的程式中設定斷點,該命令有如下四種形式
//使程式恰好在執行給定行之前停止
break line-number
//使程式恰好在進入指定的函式之前停止
break function-name
//如果condition(條件)是真,程式到達指定行或函式時停止
break line-or-function if condition
//在指定例程的入口處設定斷點
break routine-name
如果該程式是由很多原檔案構成的,你可以在各個原檔案中設定斷點,而不是在當前的原檔案中設定斷點,其方法如下:
(gdb) break filename:line-number
(gdb) break filename:function-name
break if
要想設定乙個條件斷點,可以利用break if命令,如下所示:
(gdb) break line-or-function if expr
(gdb) break 46 if testsize==100
clean number
清除原檔案中某一**行上的所有斷點
注:number 為原檔案的某個**行的行號
五、斷點的管理
1. 顯示當前gdb的斷點資訊
info break
2. delete 刪除指定的某個斷點
delete breakpoint
//該命令將會刪除編號為1的斷點
(gdb) delete breakpoint 1
//如果不帶編號引數,將刪除所有的斷點
(gdb) delete breakpoint
3. 禁止、允許使用某個斷點
disable breakpoint 1
enable breakpoint 1
該命令將禁止、允許斷點 1,同時斷點資訊的 (enb)域將變為 n、y
六、單步執行
next / n
不進入的單步執行
step
進入的單步執行
finish
如果已經進入了某函式,而想退出該函式返回到它的呼叫函式中,可使用命令finish
until
結束當前迴圈
七、函式的呼叫
call name
呼叫和執行乙個函式
(gdb) call gen_and_sork( 1234,1,0 )
(gdb) call printf(「abcd」)
$1=4
finish 結束執行當前函式,顯示其返回值(如果有的話)
八、 原檔案的搜尋
search text
該命令可顯示在當前檔案中包含text串的下一行。
reverse-search text
該命令可以顯示包含text 的前一行。
小結:常用的 gdb 命令
backtrace / bt顯示程式中的當前位置和表示如何到達當前位置的棧跟蹤(同義詞:where)
breakpoint / b在程式中設定乙個斷點
cd改變當前工作目錄
clear刪除剛才停止處的斷點
commands命中斷點時,列出將要執行的命令
continue從斷點開始繼續執行
delete刪除乙個斷點或監測點;也可與其他命令一起使用
display程式停止時顯示變數和表達時
down下移棧幀,使得另乙個函式成為當前函式
frame選擇下一條continue命令的幀
info顯示與該程式有關的各種資訊
jump在源程式中的另一點開始執行
kill異常終止在gdb 控制下執行的程式
list列出相應於正在執行的程式的原檔案內容
next執行下乙個源程式行,從而執行其整體中的乙個函式
print顯示變數或表示式的值
pwd顯示當前工作目錄
ptype顯示乙個資料結構(如乙個結構或c++類)的內容
quit退出gdb
reverse-search在原始檔中反向搜尋正規表示式
run執行該程式
search在原始檔中搜尋正規表示式
set variable給變數賦值
signal將乙個訊號傳送到正在執行的程序
step執行下乙個源程式行,必要時進入下乙個函式
undisplay display命令的反命令,不要顯示表示式
until結束當前迴圈
up上移棧幀,使另一函式成為當前函式
watch在程式中設定乙個監測點(即資料斷點)
whatis顯示變數或函式型別
gdb除錯基本命令
gdb是乙個由gnu開源組織發布的 unix linux作業系統下的 基於命令列的 功能強大的程式除錯工具。對於一名linux下工作的c 程式設計師,gdb是必不可少的工具 對c c 程式的除錯,需要在編譯前就加上 g選項 g g hello.cpp o hello 除錯可執行檔案 gdb prog...
GDB除錯基本命令
gdb是乙個強大的命令列除錯工具。大家知道命令列的強大就是在於,其可以形成執行序列,形成指令碼。unix下的軟體全是命令列的,這給程式開發提代供了極大的便利,命令列軟體的優勢在於,它們可以非常容易的整合在一起,使用幾個簡單的已有工具的命令,就可以做出乙個非常強大的功能。一般來說,gdb主要幫忙你完成...
gdb除錯的基本命令
gdb除錯在編譯時必須要加 g選項 gcc g 輸入gdb進入gdb除錯環境。或者直接輸入gdb progfile來載入檔案。或者進入gdb環境後,通過命令file progfile來載入需要除錯的可 執行檔案檔案。常用命令行表 命令命令縮寫 命令說明 list l顯示多行源 break b設定斷點...