gdb调试
1.用debug的方式编译
-g
2.打上断点
3.单步调试
step into 进入函数里面
step over 运行整个函数
step return 跳出当前函数
4.继续运行
5.打印和监控值
下面是栗子:
#include <stdlib.h>
#include <stdio.h>
static int add(int i) //创建一个函数,循环10次,将传进来的数每次+1
{ for(int k=;k<;k++)
{
i += ;
}
return i;
}
int main(int argc, char const *argv[])
{
int ret;
ret = add(); //调用函数
printf("%d\n",ret);
return ;
}
(1) 编译的时候,带调试编译
gcc test.c -g -o a.out
(2) 用gdb运行
gdb a.out
(3) 打断点
>>1.查看源码
l(ist)
>>2.打断点
b(reak) 函数名
b(reak) 行号
b(reak) 文件名:行号
b(reak) 行号 if条件
>>3.查看断点
info break(i b)
>>4.删除断点
d(elete)
-----------------------------------------------
//1.先用 l 看源码
//2.打断点
//b 7 在第7行打断点
//b add 在函数add打断点
//3.查看断点 i b
//4.删除断点 d <断点号>
(4) 调试
.r(un) 调试
.c(ontinue) 继续
.q(uit) 退出
.n(ext) --step next
.s(tep) --step into
.f(inish) --退出当前函数
.c(ontinue) --把剩下的执行完
(5) 打印值和监控值
. w(atch) x 监控x变量
. p(rint) x 把x值打印出来