gdb:调试器
调试器的功能:
调试、观察程序的运行错误,通常目的是为了排查程序的运行错误
程序错误的分类:
编译错误、链接错误、运行时错误(运行时逻辑不对以及运行时程序崩溃)
调试的前提
程序必须是一个debug版本的程序; gcc/g++默认生成releas版本的程序,若要生成debug版本,则使用-g选项,例如:gcc -g test.c -o test.exe
可执行程序的分类:
debug-调试版:不对代码进行优化,并且加入调试程序信息;
release-发布版:不包含调试信息,并且对代码进行优化
gdb常用指令
gdb ./test.exe 表示调试test.exe文件
流程控制
run:直接运行程序
start:开始逐步调试
list:查看调试行附近代码 例:list test.c:12
next:逐过程–遇到函数直接运行完毕
step:逐语句–遇到函数则进入函数内部继续调试
until:直接运行到指定位置 例:until test.c :16 直接运行到16行
continue:继续从当前位置运行
break:打断点 例如:break test.c:14 在test.c文件的第14行处添加断点
info break:查看断点信息
delete:删除断点 例:delete id(后跟断点id,可用info break查看)
watch:变量监控断点–当变量发生变化的时候停止调试,后跟变量名
quit:退出gdb调试
内存控制
print:查看嚯设置变量内容; 例:print var_name print var=val backtrac:查看函数调用栈--通常用于检测程序运行时的崩溃位置
注意:以上大部分操作也可以用首字母简写实现,但有个别指令首字母存在歧义,不能简写,在实际操作时要注意。