Linux调试器-gdb使用

目录

一. 背景

二.gdb的使用

1. 启动gdb调试工具

2. 退出gdb调试工具

3. 查看程序源码

4.运行程序

​编辑

5. 打断点

6.查看断点信息

7. 关闭断点

8. 禁用断点与启用断点

9. 逐过程单条执行(不进入函数)

10.逐语句执行(进入函数)

11.监视变量

12. 其他指令


一. 背景

  • 程序的发布方式有两种,debug(调试)模式和release(发行)模式
  • Linux gcc/g++出来的二进制程序,默认是release模式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

二.gdb的使用

下列结果以该代码为示例:

    #include<stdio.h>
	int func(int start,int end)
	{
	  int i=start;
	  int sum=0;
	  for( ;i<=end;i++)
	  {
	    sum+=i;
	  }
	  return sum; 
	}

	int main()
	{
	  int result=0;
	  printf("func开始\n");
	  result=func(1,10);
	  printf("result:%d\n",result);
	  printf("func结束\n");
	  return 0;
	}
1. 启动gdb调试工具
gdb test.c(可执行文件)

当出现如下代码时,代表进入gdb成功

[zyq@iZf8z3j2ckkap6ybtz8qseZ ~]$ gdb test.exe
GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.el7
Copyright (C) 2013 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/zyq/test.exe...done.
(gdb) 
2. 退出gdb调试工具
ctrl + d 或 quit(简写为q)
3. 查看程序源码

    从该行或该函数开始显示10行源代码

list(可简写为:l) 文件名:行号/函数 

ps.gdb会默认保存最后一条指令,按回车即可继续查看余下代码

4.运行程序

    运行程序直到结束或者遇到断点

run/r
5. 打断点

在某一行打断点/在函数开头打断点

break/b 行号 
break/b 函数名

ps.断点只能一个一个打,不能一行打多个

6.查看断点信息
info/i b

  • Num: 断点编号
  • Disp: 断点执行一次之后是否有效 kep:有效 dis:无效
  • Enb: 当前断点是否有效 y:有效 n:无效
7. 关闭断点

删除断点只能依靠断点编号

delete/d 断点编号

8. 禁用断点与启用断点

禁用断点并不是删除断点,而是使该断点失去作用

disable 断点编号  (禁用)
enable  断点编号  (启用)

9. 逐过程单条执行(不进入函数)
next/n

10.逐语句执行(进入函数)
step/s

11.监视变量
  • 单次打印变量
print/p 变量名
  • 跟踪查看一个变量,每次停下来都显示它的值
display 变量名
    ps:常监视的变量前,gdb会给它一个编号
  • 取消对先前设置的那些变量的跟踪
undisplay 变量编号
  • 查看当前栈帧局部变量的值
info/i locals
12. 其他指令
  • finish:执行到当前函数返回,然后挺下来等待命令

  • set var:修改变量的值

  • continue(或c):运行至下一个断点处

  • until X行号:跳至X行

  • breaktrace(或bt):查看各级函数调用及参数

评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张呱呱_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值