命令
|
描述
|
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 调试器。
|