gdb调试基本方法-----断点

编译程序

在进行程序编译时添加 -g 选项
例:

gcc -g -Wall -o test -test.c

断点

  1. list 查看代码
    list可简写为 l
    使用方法:

    • list [文件名]:[行号]
    • list [函数名]
      命令执行后,会显示行号附近的代码
  2. break 设置断点
    break可简写为 b
    使用方法:

    • break [文件名] :[行号]
    • break [行号]
    • break if 条件
      比如有时我们在循环处需要循环多少次后停下就用第三条命令,
      for(i = 0;i < 10; ++i) {
      	a++;
      }
      
      break if i==4这条命令执行后,当循环到第5次,满足条件i == 4时程序停住。
      在设置断点后可通过continue命令继续运行程序,程序会在所设断点处停住,contiune可简写为 c
      这里需要注意的是在使用第2种方法时, 会将断点设置在目前所在的文件里,例如现在有1.c和2.c两个文件,上一条命令是操作2.c文件,那么本次的断点会默认设置在2.c文件里。
  3. info 查看断点
    使用方法:

    • info b 或者 info break
      执行命令后会显示所有的断点号和各个断点所在的行号
  4. delete 删除断点
    使用方法:

    • delete [断点号]
      断点号可以是单个断点号,也可以是序列。例如 delete 1-10,这将删除序号在区间1~10内的所有断点。
  5. nextstep
    这两条命令用来单步调试程序,

    • next :程序向后执行一步,若为子函数则不进入子函数内部;
    • step :程序向后执行一步,若目前程序指针指向子函数则进入子函数;
  6. print
    当程序运行起来后遇到故障或者断点停住,或者单步调试时,可通过print命令来查看变量的值。

    int fun(void)
    {
    	int i, a = 1, b = 2, c = 3;
    	int array[10] = {0};
    	
    	a++;
    	b++;
    	c++;
    	
    	for(i = 0;i < 10; ++i) {
    		array[i] = i;
    	}
    	
    	return 0;
    }
    

使用方法:
print b可以查看变量b的值。**print array[3]**便可以查看数组第四个元素的值。


在断点这一部分中还有很多其他命令,比如设置观察点等等,我目前也在学习。平常调试这些基本够用了。

猜你喜欢

转载自blog.csdn.net/weixin_40077333/article/details/84711155