Linux---gdb和cgdb
一、概念
1.gdb
Linux下的调试工具
①在Linux下程序默认是release模式,成需要调试,必须得是debug模式,编译时需要加入-g选项
②示例
release模式,不可调试
debug模式,可调试
2.简单指令
①运行:r
②退出:quit
③查看源代码:list(l)+数字从数字行开始显示
④打断点:b+行号
⑤程序直接跑完:c
3.cgdb
因为gdb无法直接显示出源代码,看着很不方便,所以我们一般使用cgdb来进行调试
二、cgdb
1.界面
Esc可以将光标移动到代码处,按i可以将光标移动到下边的调试处
2.指令
①l+行号:从行号行开始展示代码
②r:无断点直接将程序跑完,有断点运行到断点处(相当于vs中的F5)
③b:Ⅰb+文件名+行号 在行号所在行打上断点
Ⅱ b+文件名+函数名 在函数名所在行打上断点
Ⅲ b+行号 在当前文件中行号所在行打上断点
打上断点的行号会变成红色
④info b:查看断点信息
⑤d + Num:删除断点
注意:删除时d后边要加断点编号,不能写行号!!!
删除后其他Num不会变,新增断点依次往后累加
⑥n(next):逐过程,不会进入函数(相当于vs中的F10)
⑦s(step):逐语句,会进入函数(相当于vs中的F11)
⑧p:打印指定变量的值
⑨finish:执行当前函数返回,然后停止,不能在main函数中使用
⑩disable+断点号:禁用断点,断点会变黄,起标记作用
⑪enable+断点号:恢复断点
⑫c(continue):直接运行到下一个断点处,断点对代码进行块级别划分,以块为单位进行快速定位区域
⑬until+行号:直接跳转到行号处
⑭display+变量:常显示变量的值,继续调试自动显示出来
⑮undisplay+变量编号:取消display
⑯info locals:显示当前函数的所有变量
3.调试技巧
①watch+变量:查看变量是否变化,发生变化会显示出来,不变化不显示,删除和断点一样,d+断点号
注意:有一些变量不应该被修改,但是你怀疑他修改导致了问题,你可以watch他,如果发生了变化,他会通知你
②set var:修改变量的值
③b+行号+if+条件语句:在循环中,直接进入条件所在的行
④condition 行号:给已经存在的断点新增条件