因调试需要,找了一些gdb调试的资料,记录下来,以后可能还用的到
想要使用gdb调试,在使用gcc编译时就要加入 -g选项;
加上-g的参数,把源程序信息编译到执行文件中。
gcc list.c -o app -g -l pthread,因为代码里面用到了线程,所以加了 -l pthread,
一般情况下,只需要 gcc list.c -o app -g即可。
编译成功后生成app文件。(app是自己命名,此文件名随意)
一:gdb基础
进入gdb调试有两种方法:
1.在命令行直接敲,gdb app
2.在命令行先输入gdb,按回车,再输入file app (编译后的文件)
个人感觉 gdb + 文件名 更加方便。
start命令,开始执行
run命令。直接运行程序
进入gdb调试时可直接运行;
单步执行(n) next 不会进入子函数
单步执行(s) setp 会进入子函数
多步执行© continue 如果没有设置断点,直接执行完毕,有断点 ,运行程序到断点停止
until 运行至当前语句块结束
finish 运行至函数结束并跳出,并打印函数的返回值
二:设置断点
break +行数 简写: b+行数
行数不清楚可以在gdb里面看源码,因为编译已经将源码信息加入到编译文件中,所以只需要输入list命令
不知道行数可以试一下,
设置断点:
在61行打了一个断点,编号为7,因为我之前已经打过6个断点。
查看断点信息 info b
删除断点 delete break n (n是指断点编号)
还有一种删除方式,个人比较少用
clear +行号 删除某一行的断点
使能,禁用断点(n是指断点编号)
disable break n 禁用断点
enable break n 使能断点
info b n 查看第n个断点的信息
quit退出gdb调试