命令 |
描述 |
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 oncebreakpoint-number |
设置指定断点有效,当到达断点时置为无效。 |
enable del breakpoint-number |
设置指定断点有效,当到达断点时删除它。 |
finish |
继续执行到函数结束。 |
Line Execution |
|
step s step number-of-steps-to-perform |
进入下一行代码的执行,会进入函数内部。 |
next n next number |
执行下一行代码。但不会进入函数内部。 |
until until line-number until line-number ifcondition |
继续运行直到到达指定行号,或者函数,地址等。 |
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 调试器。 |