断点:
BreakPointer:break lineNum;
info Break【n】:查看断点信息;n表示断点号。
break func:在某个函数的入口处打断点;
bread +- offset:在当前行号的前面或后面的offset行处停住;
设置监视:
watch var:var为某一变量;
rwatch var:当var被读时,停住程序。
awatch var:当var被读或被写时,停住程序。
info watchpoints:列出当前所有的监视点。
只有如上的两种停止点支持if。
condition bnum expression :修改断点号为bnum的停止条件为expression ;
设置捕捉点:
catch event:捕获异常;
删除停止点:
clear:清除所有已定义的停止点。
clear function:清除在函数上的所有停止点。
clear lineNum:清除指定行号上的停止点。
delete [breakpoints] [range...]:删除指定的断点,不指定参数,删除所有的断点;breakpoints:断点号,range:断点号范围。
disable:用法同上,但是gdb不会删除,在此想用时,可用enable恢复。
运行:
List:从第一行开始列出源码,简写l;
Next:单步执行语句,单步步过,简写n;
Step:单步步入,简写s;
si或ni:运行程序直到退出循环体;
Run:运行程序,简写r;
Continue:继续运行程序,简写c;
Print:查看某个变量的值,简写p;
bt、backtrace:查看函数堆栈;
源代码搜索:search regexp :向前面搜索;
reverse-search:全部搜索;
regexp:是一个正则表达式,也是一个 字符串的匹配模式。
disassemble func:查看函数的反汇编。
info line:可以跟行号,函数名,这个命令会显示处指定的源码在运行是的内存地址。
p *array@len:显示这个动态数组的取值。
p/x var:16进制显示。
自动显示:
可以设置一些自动显示的变量,当程序停住是这些变量会自动显示。
display expr
display/fmt expr/addr
expr是一个表达式,fmt表示显示的格式,addr表示内存地址。
delete display [num]:删除某个自动显示。
查看内存:
examine简写为x,来查看内存中的值。
x/(n/f/u) addr:n/f/u为三个可选参数。
n是一个正整数,表示内存的长度,也就是说当前地址向后显示几个地址的内容。
f表示显示的格式。
u表示从当前地址向后请求的字节数,如果不指定的话,gdb默认的是4字节。
三个参数可以一起使用。
finish:退出函数。
查看寄存器的值:
info registers regname :查看指定寄存器的值。
info all-registers 查看所有寄存器的值。