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
",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

 

原文地址:https://www.cnblogs.com/kmist/p/10177167.html