命令 |
描述 |
help |
列出 gdb 幫助信息。 |
help topic |
列出相關話題中的 gdb 命令。 |
help command |
列出命令描述信息。 |
apropos search-word |
搜索相關的話題。 |
info args i args |
列出運行程序的命令行參數。 |
info breakpoints |
列出斷點。 |
info break |
列出斷點號。 |
info break breakpoint-number |
列出指定斷點的信息。 |
info watchpoints |
列出觀察點。 |
info registers |
列出使用的寄存器。 |
info threads |
列出當前的線程。 |
info set |
列出可以設置的選項。 |
Break and Watch |
|
break funtion break line-number |
在指定的函數,或者行號處設置斷點。 |
break +offset break -offset |
在當前停留的地方前面或后面的幾行處設置斷點。 |
break file:func |
在指定的file文件中的func處設置斷點。 |
break file:nth |
在指定的file文件中的第nth行設置斷點。 |
break *address |
在指定的地址處設置斷點。一般在沒有源代碼時使用。 |
break line-number ifcondition |
如果條件滿足,在指定位置設置斷點。 |
break line threadthread-number |
在指定的線程中中斷。使用info threads可以顯示線程號。 |
tbreak |
設置臨時的斷點。中斷一次后斷點會被刪除。 |
watch condition |
當條件滿足時設置觀察點。 |
clear clear func clear nth |
清除函數func處的斷點。 清除第nth行處的斷點。 |
delete d |
刪除所有的斷點或觀察點。 |
delete breakpoint-number delete range |
刪除指定的斷點,觀察點。 |
disable breakpoint-number-or-range enable breakpoint-number-or-range |
不刪除斷點,僅僅把它設置為無效,或有效。 例子: 顯示斷點: info break 設置無效: disable 2-9 |
enable once breakpoint-number |
設置指定斷點有效,當到達斷點時置為無效。 |
enable del breakpoint-number |
設置指定斷點有效,當到達斷點時刪除它。 |
finish |
繼續執行到函數結束。 |
Line Execution |
|
step s step number-of-steps-to-perform |
進入下一行代碼的執行,會進入函數內部。 |
next n next number |
執行下一行代碼。但不會進入函數內部。 |
until until line-number |
繼續運行直到到達指定行號,或者函數,地址等。 |
return return expression |
彈出選中的棧幀(stack frame)。如果后面指定參數,則返回表達式的值。 |
stepi si nexti ni |
執行下一條匯編/CPU指令。 |
info signals info handle handle SIGNAL-NAMEoption |
當收到信號時執行下列動作:nostop(不要停止程序),stop(停止程序執行),print(顯示信號),noprint(不顯示),pass/noignore(允許程序處理信號),nopass/ignore(不讓程序接受信號) |
where |
顯示當前的行號和所處的函數。 |
Program Stack |
|
backtrace bt bt inner-function-nesting-depth bt -outer-function-nesting-depth |
顯示當前堆棧的追蹤,當前所在的函數。 |
backtrace full |
打印所有局部變量的值。 |
frame number f number |
選擇指定的棧幀。 |
up number down number |
向上或向下移動指定個數的棧幀。 |
info frame addr |
描述選中的棧幀。 |
info args info all-reg info locals info catch |
顯示選中棧幀的參數,局部變量,異常處理函數。all-reg也會列出浮點寄存器。 |
Source Code |
|
list l list line-number list function list - list start#,end# list filename:function |
列出相應的源代碼。 |
set listsize count show listsize |
設置list命令打印源代碼時的行數。 |
directory directory-name dir directory-name show directories |
在源代碼路徑前添加指定的目錄。 |
directory |
當后面沒有參數時,清除源代碼目錄。 |
Examine Variables |
|
print variable p variable p file::variable p 'file'::variable |
打印指定變量的值。 |
p *array-var@length |
打印arrary-var中的前length項。 |
p/x var |
以十六進制打印整數變量var。 |
p/d var |
把變量var當作有符號整數打印。 |
p/u var |
把變量var作為無符號整數打印。 |
p/o var |
把變量var作為八進制數打印。 |
p/t var x/b address x/b &variable |
以整數二進制的形式打印var變量的值。 |
p/c variable |
當字符打印。 |
p/f variable |
以浮點數格式打印變量var。 |
p/a variable |
打印十六進制形式的地址。 |
x/w address x/4b &variable |
打印指定的地址,以四字節一組的方式。 |
call expression |
類似於print,但不打印 void 。 |
disassem addr |
對指定地址中的指令進行反匯編。 |
Controlling GDB |
|
set gdb-option value |
設置 GDB 的選項。 |
set print array on set print array off show print array |
以可讀形式打印數組。默認是 off 。 |
set print array-indexes on set print array-indexes off show print array-indexes |
打印數組元素的下標。默認是 off 。 |
set print pretty on set print pretty off show print pretty |
格式化打印 C 結構體的輸出。 |
set print union on set print union off show print union |
打印 C 中的聯合體。默認是 on 。 |
set print demangle on set print demangle off show print demangle |
控制 C++ 中名字的打印。默認是 on 。 |
Working Files |
|
info files info share |
列出當前的文件,共享庫。 |
file file |
把file當作調試的程序。如果沒指定參數,丟棄。 |
core file |
把file當作 core 文件。如果沒指定參數,則丟棄。 |
exec file |
把file當作執行程序。如果沒指定參數,則丟棄。 |
symbol file |
從file中讀取符號表。如果沒指定參數,則丟棄。 |
load file |
動態鏈入file文件,並讀取它的符號表。 |
path directory |
把目錄directory加入到搜索可執行文件和符號文件的路徑中。 |
Start and Stop |
|
run r run command-line-arguments run < infile > outfile |
從頭開始執行程序,也允許進行重定向。 |
continue c |
繼續執行直到下一個斷點或觀察點。 |
continue number |
繼續執行,但會忽略當前的斷點number次。當斷點在循環中時非常有用。 |
kill |
停止程序執行。 |
quit q |
退出 GDB 調試器。 |