作用:①启动被调试的程序;②让被调试的程序在指定的位置停住;③当程序停住时,检查程序状态(变量值);
完整流程如下(例子,以主函数调用func函数的流程讲解):↓
使用命令:$:gcc -g text.c -o test //生成可调试程序;
命令:$:gdb ./test //启动测试
list 1 //从第一行列表开始显示,也可以简写l
[空命令] //重复进行上次命令
break 16 //在第16行处设置断点,也可简写b+行号
[显示] Breakpoint 1... //显示断点编号,1号
b func //采用b+函数名的方式也可以,即在进行该函数前断点
[显示] Breakpoint 2... //断点编号,2号
info break //查询并显示已有断点信息,将列表显示
run //程序开始运行,也可以简写r
[然后程序会停在第1号的断点处,第16行]
next //单步运行,其中下面未赋值语句将跳过(默认不是一步),也可简写n
print i //查看i现在的值,也可简写为p
n //下一步
...
continue //程序直接运行到下一个断点,如无,则运行到程序结束
...
finish //结束当前函数运行
[回到函数调用处,func]
n //下一步
[显示这一步的结果]
...
c //continue 运行
return 0; // 上面一个的continue直接运行到程序结束,本次调试只设置了两个断点
quit //退出调试模式,也可以简写q或exit
常用的命令
①list(l)
list +行号 //从行号开始处开始显示,如无行号则默认从第1行开始,往下显示10行
list+函数名 //显示指定函数的代码
②break(b)
b+函数名 //在函数入口处添加断点
b+行号 //在指定行添加代码
b 5 if i=0 //i=10时,第5行断点生效
③delete(d)
d + 断点编号 //删除断点
d 3-7 //删除第3-7号之间所有的编号
④clear(不可简写为c,因为有continue)
clear //清除全部断点
clear +函数名 //清除函数名处的断线
⑤run(r) //程序运行
⑥单步运行的两个命令
next(n) //若下一步是函数调用则默认函数整体是一步,直接通过
step(s) //进入调用函数,把函数中的每一步默认为一步步
⑦断点失效与有效
disable + 断点编号 //让断点失效
enable + 断点编号 //让断点生效
⑧kill //终止调试,但不退出
⑨set var //设置变量值
⑩start //开始调试程序,但是停在主函数第一行执行前