Linux - gdb调试器


前言

当想调式时,Linux没有Windows的Visual Studio的调试工具,那在Linux中想使用调试器就需要使用gdb调试器。


一、在调试前需了解版本

1、了解debug和release版本的区别

  debug模式一般称为调试模式,release称为发布模式。

1.1、debug模式

  调试信息,保留详细的调试信息,如变量名、函数调用栈等,以便开发者追踪问题和理解程序行为。这些调试信息对于快速定位问题和修复错误至关重要。
  错误检测,通常启用断言(Assertions)和错误检查机制,以帮助开发者发现和修复潜在问题。这些机制有助于确保程序的健壮性和稳定性。

1.2、realse模式

  调试信息,为了减小程序体积和提高运行速度,大部分调试信息会被移除。这意味着在Release模式下,开发者可能无法像Debug模式那样轻松地获取程序的内部状态信息。
  错误检测,出于性能考虑,断言和错误检查机制通常被禁用或减少。这有助于减少程序运行时的开销,但也可能导致一些潜在问题在发布后才被发现。

二、使用gdb调试器

1、安装gdb

在默认情况下使用gbd应该是会报错的,如果报错的话需要安装。

//centos 系统
sudo yum install -y gdb

//ubuntu系统
sudo apt install gdb

2、使用gdb

使用已编译过的程序进行gdb调试方法
gdb test(程序名)
在这里插入图片描述
使用该指令会发现报错,其实是因为在Liunx中gcc和g++中默认是以release模式编译完成的,上面也解释了debug与release模式的区别,所以我们使用gdb编辑器的话,就要使用debug模式的程序。

3、程序编译为dubug模式

指令:

gcc -o test test.c -g

重点是 -g 模式,添加 -g 就是编译为debug模式
在这里插入图片描述
编译成功后我们后续就需要开始调试了。

三、开始调试

1、gdb指令

1.1、行号(list)

_ list、l (行号) _:用于显示指定行之后的代码(如未显示完,直接回车即可)

在这里插入图片描述

1.2、设置断点

break、b 行号/函数名/file(文件名):用于在某一行中设置一个断点
在这里插入图片描述
打断点之后用run开始运行。
在这里插入图片描述
就会在断点处停止(这里就与visual studio类似,就是以代码的形式出现)
#3# 1.3、查看断点位置

info b //用于查看我们所打的断点位置

在这里插入图片描述

1.4、删除断点

d 断点编号 //删除断点(断点编号需要使用info b去查看)
delete breakpoints //是用于删除所有断点 

在这里插入图片描述

1.5、逐过程、逐语句

n //逐过程 ———— 同等于 vs 中 F10
s //逐语句 ———— 同等于 vs 中 F11

1.6、查看变量内容与地址

p 变量 // 显示变量的内容与地址

在这里插入图片描述
常显示变量

display 变量名/取地址 //与p类似,但用与常显示变量的内容和地址

在这里插入图片描述
删除常显示的变量

undisplay 编号 //取消常显示变量的内容和地址的指令

在这里插入图片描述

1.7、常用于查找问题指令

c //从一个断点运行到下一个断点

finish //将一个函数运行结束,继续执行后面的代码

until 行号 //在一个范围中,直接运行到指定行

使用指令 c
测试finish、until使用

1.8、查看调用的堆栈(函数)

bt //用于查看调用了那些函数的堆栈

1.9、修改程序中变量的数值

set name = value (变量 = 数值)//是用于修改一个变量的内容(无需修改代码)

2、运行程序

在进入gdb调试器后,我们使用run指令可以让gdb运行程序。


总结

本章就是讲解gdb的使用方法以及注意事项,后续可以使用cgdb,用法与gdb相似,界面也比gdb美观。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值