Linux调试器-gdb使用

本文我们就来讲解一下Linux下的C与C++的调试器gdb

cd  

背景

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

在Linux下编译出来的C默认为release版本。从下图中可以看到这个编译出来的C文件并不是debug版本的。

当使用gcc -o mytest test.c -g指令后,就可以生成debug版本的程序。

我们还可以简单地从可执行程序的二进制构成来查看相关的信息:readelf -S mytest。通过这种方法来进行分辨。 

在以debug版本的文件中可以查询到上图的信息,而release版本的可执行文件无法查阅。

gdb相关指令 

注:使用回车可以重复上一次的操作。

  • 使用 Ctrl + d 或者 quit 退出
  • list / l 行号:显示该行开始的binFile源代码,接着上次的位置往下列每次10行
  • list / l :列出某个函数的源代码
  • run / r 运行程序
  • break / b 行号:在某一行添加断点
  • break 文件名 :函数名:在某个函数开头设置断点
  • info b :查看断点信息
  •  d 断点的序号
  • enable / disable b 断点序号:断点的使能
  • n / next:单条执行(逐过程)
  • s / step:进入函数调用(逐语句)
  • p 变量:打印表达式的值
  • display 变量:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay 变量序号:
  • until X行号:跳至X行(在函数内进行指定位置跳转,执行完区间代码)
  • finish:执行到当前函数返回,然后挺下来等待命令
  • c:从一个断点处直接运行至下一个断点处
  • set var n = xxx:设置某一个变量是特定的值
  • breaktrace(或bt):查看各级函数调用及参数

 调试器的核心工作是为了定位问题,所有查看内容的指令不影响调试的执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值