1、啟動
1)程式的運作參數。
set args //指定運作時參數。(如:set args 10 20 30 )
show args //檢視設定好的運作參數。
2)運作環境
path //設定程式的運作路徑。
show paths //檢視程式的運作路徑。
set environment varname[=value] //設定環境變量。如:set env USER=hchen
show environment [varname] //檢視環境變量
3)工作目錄
cd //相當于shell的cd指令。
pwd //顯示目前的工作目錄。
4)程式的輸入輸出
info terminal//顯示程式用到的終端的模式
使用重定向空值程式輸出。如run<outfile
tty指令可以指定寫輸入輸出的終端裝置。如tty/dev/ttyb
2、斷點
(gdb)bmake_< TAB> // 支援聯想功能
break
break +offset
break -offset
break filename:linenum
break filename:function
break if
break xx thread
disable 5-8
enable
info break
delete [breakpoints] [range…]
watch //資料斷點,表達式可以是一個變量或位址
3、運作
c/continue //恢複程式的運作直到程式結束,或下一個斷點的到來。
s/step //單步跟蹤,如果有函數調用,他會進入該函數
n/next //同樣單步跟蹤,如果有函數調用,他不會進入函數。
finish //運作程式,直到目前函數完成傳回。
return //使用return指令取消目前函數的執行,并立即傳回
4、堆棧資訊
bt/backtrace //n是一個正整數,表示隻列印棧頂上n層的棧資訊。
f/frame //切換目前的棧
select-frame 對應于frame 指令。
up-silently 對應于up指令。
down-silently 對應于down指令。
info frame //列印出更為詳細的目前棧層的資訊
info args //列印出目前函數的參數名及其值。
info locals //列印出目前函數中所有局部變量及其值。
list //顯示程式第linenum行周圍的源程式。
list 1,20 //檢視1到20行的代碼
list //顯示函數名為function的函數的源程式。
list //顯示目前行後面的源程式。
5、變量
print/p //expr可以為變量或位址
--file:variable
--function::variable
int *array=(int*)malloc(len*sizeof(int))
print x=4
set var width=47 //set用于修改gdb參數,建議帶上var
6、自動顯示
設定一些自動顯示的變量,當程式停住時,或是在你單步跟蹤時,這些變量會自動顯示
display
undisplay
delete display
disable display
enable display
info display
7、condition
condition
修改斷點号為bnum的停止條件為expression
清除斷點号為bnum的停止條件。
還有一個比較特殊的維護指令ignore,可以指定程式運作時,忽略停止條件幾次。
ignore
表示忽略斷點号為bnum的停止條件count次。
8、多線程
(gdb)set scheduler-locking on/off //鎖定排程器來避開gdb根據優先權來改變目前線程
(gdb)show scheduler-locking //确定目前模式
(gdb)set follow-fork-mode child //跟蹤子程序
(gdb)set follow-fork-mode parent //跟蹤父程序
(gdb)set follow-fork-mode ask //設定gdb在fork時詢問跟蹤哪一個程序
info threads //檢視目前應用程式中所有的線程