GDB常用命令大全 GDB 命令詳細解釋

2021-06-29 13:07:13 字數 4807 閱讀 1102

gdb常用命令大全 gdb 命令詳細解釋

一、檢視gdb命令幫助 兩次按下tab鍵 然後console 控制台輸入 help 二、

gdb是乙個強大的命令列除錯工具。大家知道命令列的強大就是在於,其可以形成執行序列,形成指令碼。如果你是在unix平台下做軟體,你會發現gdb這個除錯工具有比vc、bcb的圖形化偵錯程式更強大的功能。所謂「寸有所長,尺有所短」就是這個道理。 

gdb(gnu debuger),它可以用來除錯c和c++程式,功能不亞於windows下的許多圖形介面的除錯工具。

gdb主要幫忙你完成下面四個方面的功能: 

1、啟動你的程式,可以按照你的自定義的要求隨心所欲的執行程式。 

2、可讓被除錯的程式在你所指定的調置的斷點處停住。(斷點可以是條件表示式) 

3、當程式被停住時,可以檢查此時你的程式中所發生的事。 

4、動態的改變你程式的執行環境。 

gdb基本命令

在程式編譯時增加-g選項以支援gdb除錯如:

$ gcc -g example.c -o example.x

通過上述命令對example.c編譯之後,使用下列命令進入到gdb除錯:

$ gdb example.x

在gdb除錯中,常用的命令有以下幾個:

$ list 縮略為 l

列出程式原始碼,每次列出10行,按回車重複執行上一命令;

$ run 縮略為 r

程式開始執行,在r後可以加入程式啟動引數,程式執行到斷點處暫停;

$ continue 縮略為 c

程式繼續執行,到下一斷點處暫停;

單步除錯

$ step 縮略為s

$ next 縮略為 n

程式繼續執行到下一斷點;

$ break 縮略為 b

在程式某一位置設定斷點;

$ info break 縮略為 i b

檢視斷點資訊;

設定/檢視執行引數

$ set args ---/show args

載入執行中的程序進行除錯(attach to the running process to be debugged.):

$ gdb attatch pid

specifying source directories

$ dir dirname …

以十六進製制輸出記憶體塊資料

$ x/28hx ---

段錯誤除錯,core檔案樣例

通過ulimit命令檢視一下系統是否配置支援了dump core的功能。通過ulimit -c或ulimit -a,可以檢視core file大小的配置情況,如果為0,則表示系統關閉了dump core;可以通過ulimit -c unlimited來開啟。若發生了段錯誤,但沒有core dump,是由於系統禁止core檔案的生成。

$ gdb [exec file] [core file]

檢視堆疊資訊:

$ bt

ps:對於python程式在linux下可以使用pdb做除錯!

published by windows livewriter.

除錯開始時,必須先載入要進行除錯的程式,可以用以下兩種方式:

* 在啟動gdb後執行以下命令:

file 可執行檔案路徑

* 在gdb啟動時就引導程式:

gdb 可執行檔案路徑

引導程式後,接下來就是要進行斷點的設定,要監視的變數的新增等工作,下面對在這個過程中常會用到的命令逐一進行介紹:

* list :顯示程式中的**,常用使用格式有:

list

輸出從上次呼叫list命令開始往後的10行程式**。

list -

輸出從上次呼叫list命令開始往前的10行程式**。

list n

輸出第n行附近的10行程式**。

list function

輸出函式function前後的10行程式**。

* forward/search :從當前行向後查詢匹配某個字串的程式行。使用格式:

forward/search 字串

查詢到的行號將儲存在$_變數中,可以用print $_命令來檢視。

* reverse-search :和forward/search相反,向前查詢字串。使用格式同上。

* break :在程式中設定斷點,當程式執行到指定行上時,會暫停執行。使用格式:

break 要設定斷點的行號

* tbreak :設定臨時斷點,在設定之後只起作用一次。使用格式:

tbreak 要設定臨時斷點的行號

* clear :和break相反,clear用於清除斷點。使用格式:

clear 要清除的斷點所在的行號

* run :啟動程式,在run後面帶上引數可以傳遞給正在除錯的程式。

* awatch :用來增加乙個觀察點(add watch),使用格式:

awatch 變數或表示式

當表示式的值發生改變或表示式的值被讀取時,程式就會停止執行。

* watch :與awatch類似用來設定觀察點,但程式只有當表示式的值發生改變時才會停止執行。使用格 式:

watch 變數或表示式

需要注意的是,awatch和watch都必須在程式執行的過程中設定觀察點,即可執行run之後才能設定。

* commands :設定在遇到斷點後執行特定的指令。使用格式有:

commands

設定遇到最後乙個遇到的斷點時要執行的命令

commands n

設定遇到斷點號n時要執行的命令

注意,commands後面跟的是斷點號,而不是斷點所在的行號。

在輸入命令後,就可以輸入遇到斷點後要執行的命令,每行一條命令,在輸入最後一條命令後輸入end就可以結束輸入。

* delete :清除斷點或自動顯示的表示式。使用格式:

delete 斷點號

* disable :讓指定斷點失效。使用格式:

disable 斷點號列表

斷點號之間用空格間隔開。

* enable :和disable相反,恢復失效的斷點。使用格式:

enable 斷點編號列表

* ignore :忽略斷點。使用格式:

ignore 斷點號 忽略次數

* condition :設定斷點在一定條件下才能生效。使用格式:

condition 斷點號 條件表示式

* cont/continue :使程式在暫停在斷點之後繼續執行。使用格式:

cont

跳過當前斷點繼續執行。

cont n

跳過n次斷點,繼續執行。

當n為1時,cont 1即為cont。

* jump :讓程式跳到指定行開始除錯。使用格式:

jump 行號

* next :繼續執行語句,但是跳過子程式的呼叫。使用格式:

next

執行一條語句

next n

執行n條語句

* nexti :單步執行語句,但和next不同的是,它會跟蹤到子程式的內部,但不列印出子程式內部的語句。使用格式同上。

* step :與next類似,但是它會跟蹤到子程式的內部,而且會顯示子程式內部的執**況。使用格式同上。

* stepi :與step類似,但是比step更詳細,是nexti和step的結合。使用格式同上。

* whatis :顯示某個變數或表示式的資料型別。使用格式:

whatis 變數或表示式

* ptype :和whatis類似,用於顯示資料型別,但是它還可以顯示typedef定義的型別等。使用格式:

ptype 變數或表示式

* set :設定程式中變數的值。使用格式:

set 變數=表示式

set 變數:=表示式

* display :增加要顯示值的表示式。使用格式:

display 表示式

* info display :顯示當前所有的要顯示值的表示式。

* delete display/undisplay :刪除要顯示值的表示式。使用格式:

delete display/undisplay 表示式編號

* disable display :暫時不顯示乙個要表示式的值。使用格式:

disable display 表示式編號

* enable display :與disable display相反,使用表示式恢復顯示。使用格式:

enable display 表示式編號

* print :列印變數或表示式的值。使用格式:

print 變數或表示式

表示式中有兩個符號有特殊含義:$和$$。

$表示給定序號的前乙個序號,$$表示給定序號的前兩個序號。

如果$和$$後面不帶數字,則給定序號為當前序號。

* backtrace :列印指定個數的棧幀(stack frame)。使用格式:

backtrace 棧幀個數

* frame :列印棧幀。使用格式:

frame 棧幀號

* info frame :顯示當前棧幀的詳細資訊。

* select-frame :選擇棧幀,選擇後可以用info frame來顯示棧幀資訊。使用格式:

select-frame 棧幀號

* kill :結束當前程式的除錯。

* quit :退出gdb。 

如要檢視所有的gdb命令,可以在gdb下鍵入兩次tab(製表符),執行「help command」可以檢視命令command的詳細使用格式。

gdb常用命令

gnu的偵錯程式稱為gdb,是乙個互動式的程式,工作在字元模式。其常用命令如下 break num 在指定的行上設定斷點 break 1 bt 顯示函式的呼叫順序 clear 刪除斷點 clear test.c 10 display expr 每次程式停止後顯示表示式的值 printf expr顯示...

GDB常用命令

1 執行 run2 單步執行 step next finish 一直執行到函式返回 until 執行到某一行 3 斷點 break args break 12 break 10 hbreak args 硬體輔助斷點 thbreak args rbreak args info breakpoints ...

gdb 常用命令

呼叫gdb編譯需要在cc後面加 g引數再加 o root redhat home gdb 除錯檔案 啟動gdb gdb l 字母l 從第一行開始列出原始碼 gdb break n 在第n行處設定斷點 gdb break func 在函式func 的入口處設定斷點 gdb info break 檢視斷...