Linux课程五课---Linux调试器-gdb使用

时间:2024-03-27 18:02:29

作者前言

???? ✨✨✨✨✨✨????????????????????????????????
​???? 作者介绍: ????????
???? ???????????????????????????? ????
????作者id:老秦包你会, ????
简单介绍:????????????????????????????????????????????????????????????
喜欢学习C语言、C++和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 ????????????????????????????????
????个人主页::小小页面????
????gitee页面:秦大大????
????????????????????????????????
???? 一个爱分享的小博主 欢迎小可爱们前来借鉴????


gdb的使用

  • **作者前言**
  • 简单使用准备工作
    • gdb的使用

简单使用准备工作

我们先创建一个简单的.c文件或者 .cpp文件
在这里插入图片描述
makefile文件
在这里插入图片描述
我们知道发布软件一般有两种方式:

  1. debug (可以调试)
  2. release(不可以调试)
    如果我们直接使用上面的makefile里面的代码运行出来的可执行,使用gdb来调试就会找不到的
    ,因为我们知道,debug生成的可执行文件带有调试信息,而.release生成的可执行程序去掉调试信息
    在Linux中生成的可执行程序默认是release版本的,如果我们要生成debug版本的就要在生成可执行的文件的指令加个-g
    在这里插入图片描述
g++ test.cpp -o test.out -g

debug版本下的可执行文件是比release版本的大的,
在VS2019中,我们如果要调试是要在debug下才可以
在这里插入图片描述
所以我们是要gdb调试器的时候,可执行程序也必须是debug版本的

gdb的使用

安装gdb

sudo yum install gdb -y

开始调试可执行程序

gdb test.out

然后在gdb下的相关命令

  1. 显示该行号周围的10行代码,每次只显示出10行
list + 数字 或者 l+数字  # 显示行号后的代码
list +函数名 或者 l + 函数名 # 显示函数结构体

在这里插入图片描述
如果是多个文件整合成的可执行文件,如果想查看某个文件的内容。可以

l 文件名:行号

在这里插入图片描述

我们可以继续按回车或按l 然后回车,会继续显示下去,每次10行代码
2. gdb的F5

r或者run

在这里插入图片描述
3. 断点

添加断点

b+行号  # 在该行打断点

查看断点

info b

在这里插入图片描述
取消断点

d+序号

这个序号就是info b 查看断点后显示出来的Num下的序号,如上图
在这里插入图片描述
禁用断点
在这里插入图片描述

disable + 序号

启用断点

enable +序号

逐过程
在这里插入图片描述
在vs调试中F10就是逐过程,如果在linux中的gdb的逐过程就是n指令

n或者 next

后面可以一直按回车键,进行逐过程
逐语句
在vs的调试中F11就是逐语句的快捷键,在如果在linux中的gdb的逐语句就是s指令

s或者step

后面可以一直按回车键,进行逐语句了

显示变量值和地址

p 变量或者&变量

在这里插入图片描述
如果是要常显示可以使用这个命令

display 变量名

在这里插入图片描述
会一直显示到程序结束,
如果想取消常显示,直接取消变量名是不行的,要取消序号号才行
在这里插入图片描述

undisplay 序号

在这里插入图片描述
这个命令就是取消常显示了

该断点运行到下一个断点

c或者comtinue

查看当前处于哪个函数里面也可以理解为压栈

breaktrace(或bt)

在这里插入图片描述
把自定义函数运行结束,这个必须再运行到函数体内才能执行的

finish

在这里插入图片描述
从该行运行到x行

until

在这里插入图片描述
如果是死循环,就会一直运行下去,直到运行到x行
更改变量值
如果我们运行过程中要更改一些变量的值可以使用这个命令

set var 变量名=值

0
总结
gdb的总结到这里就结束了.