09 gdb

gdb是linux下的一款调试器

背景

gcc默认编译的是release版本,这个版本是不能调试的,只有debug模式才可以,需要在二进制程序的时候加上-g选项,先准备一份代码,编译为调试版

  #include <stdio.h>
  
  void fun()
  {
      int sum = 0;
      int i = 5;
      while(i >0)
      {
          sum = sum + i;
          i++;
      }
  
  }
  
  int main()
  {
    int a = 4;
    int b = 5;
      fun();
      return 0;
  } 

编译调试版

gcc test.c -o test -g

可以查看程序的各个段是否可调试,是否包含调试信息

readelf -S 程序名

在这里插入图片描述

readelf -S 程序名 | grep -i debug
上面的debug就是可调试的信息

开始使用

输入gdb加程序名开始调试,输入quit或crtl+d退出

list/l 行号:列出源代码,接着上次的位置下列,每次列10行,可以接行号,按回车不断显示下面代码

在这里插入图片描述
list/l 函数名: 列出函数的源代码
run/r : 运行程序,如果没有设置断点,直接运行结束
break/b 行号: 给指定的行设置断点
info break: 查看断点信息
delete points/ 断点编号: 删除所有/指定断点
disable/enable 断点编号: 关闭或打开断点
在这里插入图片描述
next/n : 逐过程
step/s: 进入函数调用
break 函数名: 在函数开头设置断点
finish: 完成当前函数返回,等待命令
printf/p: 打印变量名
bt: 查看调用堆栈
display: 设置常显示
undisplay: 取消常显示
until: 跳转到指定行,不建议
c: 运行到下一个断点处
set var: 修改变量值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值