在linux下編譯程序要用到gdb,我一直記不到幾個命令,所以轉(zhuǎn)來一篇講解gdb命令的帖子,一邊隨時查找。
作者:yrj 的 Blog
gdb 命令詳解
awatch
|
指定一個變量,如果這個變量被讀或者被寫,則暫停程序運(yùn)行,在調(diào)試器中顯示信息,并等待下一個調(diào)試命令。參考rwatch和watch命令。
|
backtrace
|
顯示函數(shù)調(diào)用得所有棧框架(stack frames)的 蹤跡和當(dāng)前函數(shù)的參數(shù)的值,bt是這個命令的簡寫。
|
break
|
設(shè)置一個斷點(diǎn),這個命令需要指定代碼行或者函數(shù)名作為參數(shù)
|
clear
|
刪除一個斷點(diǎn),這個命令需要制定代碼行或者函數(shù)名作為參數(shù)
|
continue
|
調(diào)試器停止的地方繼續(xù)執(zhí)行
|
Ctrl-C
|
在當(dāng)前位置停止執(zhí)行正在執(zhí)行的程序,斷點(diǎn)在當(dāng)前行
|
disable
|
禁止斷點(diǎn)功能,這個命令需要禁止的斷點(diǎn)在斷點(diǎn)列表索引值作為參數(shù)
|
display
|
在斷點(diǎn)的停止的地方,顯示指定的表達(dá)式的值。(顯示變量)
|
enable
|
允許斷點(diǎn)功能,這個命令需要允許的斷點(diǎn)在斷點(diǎn)列表索引值作為參數(shù)
|
finish
|
繼續(xù)執(zhí)行,知道當(dāng)前函數(shù)返回
|
ignore
|
忽略某個斷點(diǎn)制定的次數(shù)。例:ignore 4 23 忽略斷點(diǎn)4的23次運(yùn)行,在第24次的時候中斷
|
info breakpoints
|
查看斷點(diǎn)信息
|
info display
|
查看設(shè)置的需要顯示的表達(dá)式的信息
|
kill
|
終止當(dāng)前debug的進(jìn)程
|
list
|
顯示10行代碼。如果沒有提供參數(shù)給這個命令,則從當(dāng)前行開始顯示10行代碼。 如果提供了函數(shù)名作為參數(shù),則從函數(shù)開頭顯示。如果提供代碼行的編號作為參 數(shù),這一行作為開頭顯示。
|
load
|
動態(tài)載入一個可執(zhí)行文件到調(diào)試器。
|
next
|
執(zhí)行下一行的源代碼的所有指令。如果是函數(shù)調(diào)用,則也當(dāng)作一行源代碼,執(zhí)行到此函數(shù)返回
|
nexti
|
執(zhí)行下一行的源代碼中的一條匯編指令
|
print
|
顯示變量的值
|
ptype
|
顯示變量的類型
|
return
|
強(qiáng)制從當(dāng)前函數(shù)返回
|
run
|
從程序開始的地方執(zhí)行
|
rwatch
|
指定一個變量,如果這個變量被讀,則暫停程序運(yùn)行,在調(diào)試器中顯示信息,并等待下一個調(diào)試命令。參考rwatch和watch命令。
|
set
|
設(shè)置變量的值。例如:set nval=54 將把54保存到nval變量中
|
step
|
繼續(xù)執(zhí)行程序下一行源代碼的所有指令。如果是調(diào)用函數(shù),這個命令將進(jìn)入函數(shù)的內(nèi)部,單步執(zhí)行函數(shù)中代碼。
|
stepi
|
繼續(xù)執(zhí)行程序下一行源代碼中的匯編指令。如果是函數(shù)調(diào)用,這個命令將進(jìn)入函數(shù)的內(nèi)部,單步執(zhí)行函數(shù)中的匯編代碼。
|
txbreak
|
在當(dāng)前函數(shù)的退出的點(diǎn)上設(shè)置一個臨時的斷點(diǎn)(只可使用一次)。
|
undisplay
|
刪除一個display設(shè)置的變量顯示。這個命令需要將display list中的索引做參數(shù)。
|
watch
|
指定一個變量,如果這個變量被寫,則暫停程序運(yùn)行,在調(diào)試器中顯示信息,并等待下一個調(diào)試命令。參考rwatch和watch命令。
|
whatis
|
顯示變量的值和類型。
|
xbreak
|
在當(dāng)前函數(shù)的退出的點(diǎn)上設(shè)置一個斷點(diǎn)。
|