Makefile (2) gdb
gdb调试
1.用debug的方式编译
-g
2.打上断点
3.单步调试
step into 进入函数里面
step over 运行整个函数
step return 跳出当前函数
4.继续运行
5.打印和监控值
下面是栗子:
1 #include <stdlib.h>
2 #include <stdio.h>
3
4 static int add(int i) //创建一个函数,循环10次,将传进来的数每次+1
5 {
6
7 for(int k=0;k<10;k++)
8 {
9 i += 1;
10 }
11 return i;
12 }
13
14 int main(int argc, char const *argv[])
15 {
16 int ret;
17 ret = add(10); //调用函数
18 printf("%d\n",ret);
19 return 0;
20 }
(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) 调试
1.r(un) 调试
2.c(ontinue) 继续
3.q(uit) 退出
1.n(ext) --step next
2.s(tep) --step into
3.f(inish) --退出当前函数
4.c(ontinue) --把剩下的执行完
(5) 打印值和监控值
1. w(atch) x 监控x变量
2. p(rint) x 把x值打印出来
(6) 神奇的wi --输入wi