调试程序时,暂停程序运行时首要任务,在gdb中有以下几种暂停方法:断点(BreakPoint)、观察点(WatchPoint)、捕捉点(CatchPoint)、信号(Signals)、线程停止(Thread Stops)

设置断点

break <function> 在进入指定函数时停住。C++中可以使用class::functionfunction(type,type)格式来指定函数名
break <linenum> 在指定行号停住
break +offset

break -offset

在当前行号的前面或后面的offset行停住。offset为自然数
break filename:linenum 在源文件filenamelinenum行处停住
break filename:function 在源文件filenamefunction函数的入口处停住
break *address 在程序运行的内存地址处停住
break break命令没有参数时,表示在下一条指令处停住
break … if <condition> 可以是上述的参数,condition表示条件,在条件成立时停住。比如在循环境体中,可以设置break if i=100,表示当i100时停住程序
info breakpoints [n]

info break [n]

查看断点时,可使用info命令,如下所示:(注:n表示断点号)

设置观察点

观察点一般来观察某个表达式(变量也是一种表达式)的值是否有变化了,如果有变化,马上停住程序。我们有下面的几种方法来设置观察点:
watch <expr>    为表达式(变量)expr设置一个观察点。一量表达式值有变化时,马上停住程序。
rwatch <expr>   当表达式(变量)expr被读时,停住程序。
awatch <expr>   当表达式(变量)的值被读或被写时,停住程序。
info watchpoints 列出当前所设置了的所有观察点。 更多 >