作者前言
???? ✨✨✨✨✨✨????????????????????????????????
???? 作者介绍: ????????
???? ???????????????????????????? ????
????作者id:老秦包你会, ????
简单介绍:????????????????????????????????????????????????????????????
喜欢学习C语言、C++和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 ????????????????????????????????
????个人主页::小小页面????
????gitee页面:秦大大????
????????????????????????????????
???? 一个爱分享的小博主 欢迎小可爱们前来借鉴????
gdb的使用
- **作者前言**
- 简单使用准备工作
- gdb的使用
简单使用准备工作
我们先创建一个简单的.c文件或者 .cpp文件
makefile文件
我们知道发布软件一般有两种方式:
- debug (可以调试)
- 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下的相关命令
- 显示该行号周围的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 变量名=值
总结
gdb的总结到这里就结束了.