show——
show language:查看当前程序的语言环境。
show convenience:查看当前所设置的所有环境变量,不同与environment。
show paths:查看程序的运行路径。
set——
set language <language>:手动设置当前程序的语言环境。
set var <variable>=<value>:通过var指定variable为程序的变量而非GDB的变量,以免产生冲突。
set $<custom_env>=<value>:自定义环境变量,要使用美元符号$。
set print address<on/off>:设置地址是否显示,类似地址的还有许多其它的选项,它们也都可以设置显示开关,当前显示状态可以通过show命令查看。
set args:设置运行时参数。
info——
info frame:查看当前函数的程序语言。
info source:查看当前文件的程序语言。
info registers:查看寄存器的情况。
info line [linespec]:查看源代码在内存中的地址。
info args:显示当前函数的参数名及其值。
info locals:显示当前函数中所有局部变量及其值。
info catch:显示当前函数中的异常处理情况。
info threads:显示线程信息。
info program:查看程序运行状态。
程序运行——
print:查看程序数据,GDB以$1、$2、$3...的方式保存为历史记录,其输出格式是可以指定的,在print后加一个斜线/再加一个格式控制符。如果需要查看一段连续的内存空间的值,使用@符号,左边是第一个内存的地址值,右边是想要查看内存的长度。显示变量时如果发生冲突,可使用::符号。
list:显示源代码,可以通过listsize设置一次显示源代码的行数。
search <re>:用正则表达式搜索源码。
display[/fmt]<expr>:设置程序停住时自动显示的内容,fmt是可选的显示格式,display可通过undisplay取消自动显示,或者是delete删除自动显示,而disable和enable让自动显示失效或恢复而不去删除,当前状态可通过info命令查看。
call <expr>:执行expr表达式,表达式可以是一个函数,以此达到强制调用函数的目的,另一个相似的命令是print命令。
jump <linespec>:指定下一条语句的运行点。
signal <signal>:发送信号给被调试程序,不同于shell的kill命令,后者是被GDB截获的,另外handle命令处理信号,catch命令捕捉程序中发生的事件。
x:即examine,查看内存地址中的值。
directory:指定源文件搜索路径。
断点相关——
break:指定断点位置,还可以指定断点所在的线程。
bt:即backtrace,显示当前栈的信息,具体某一层栈可通过up、down或frame查询。
condition:设置条件断点。
commands:设置断点停止时执行额外的命令。
ignore:设置忽略断点停止的次数。
until:运行程序直到退出循环。
clear:清除指定的断点,类似于delete。
return [expr]:调试断点停在函数中时,强制返回,expr是可选的返回值。
观察点——
watch:设置观察点。
目录——
cd:同shell中的cd,切换目录。
pwd:显示当前目录。
shell——
shell <command>:运行shell中的命令。