Linux调试器-gdb使用

前言:我们将解决一下几个问题

什么是gdb

gdb是什么呢?gdb其实就是Linux下的调试器。

为什么要有gdb

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

怎么使用gdb

Linux项目自动化构建工具-make/Makefile

make是一个命令工具,是一个解释makefile中指令的命令工具。
make是一条命令,makefile是一个文件,两个搭配使用,完成项目自动化构建。

如何编写Makefile文件

首先:输入指令 touch Makefile 创建一个名为Makefile的文件。
其次:vim Makefile打开文件,进行编辑。
最后:在文件中输入依赖关系和依赖方法。
举个简单的例子:
我有一个test.c的文件。我想创建一个可执行程序的名字叫做 test.
那么我在文件中输入:
test:test.c 这是什么意思呢?
test 依赖于 test.c文件
依赖的方法是什么呢?(这里需要编译就使用gcc)
这里是需要换行,并加一个table。
gcc -o test test.c
再紧接着加入声明:
.PHONY:clean
clean:
这里也需要换行并加入table
rm -f test
在这里插入图片描述
最后大概就是这个样子。
让我们来看看效果。在这里插入图片描述
输入一个make指令,就可以自动编译。
在这里插入图片描述
使用make clean 就可以删除指定文件。

使用gdb

首先:我们在进行编译的时候要加上-g,这样编译出的文件才可以直接进行调试:
直接在Makefile中修改即可,以上面的例子继续修改。
gcc -o test test.c -g
然后再调试 编译出来的可执行程序.
gdb test
在这里插入图片描述
光标在的那一行,开头是(gdb),就证明我们进入了调试模式。

调试指令

1.list(l) 显示代码

在这里插入图片描述
通过list显示部分代码,再输入l显示剩余代码。
list显示的是它自己所要展示的方式。
可以看到是从第7行开始显示的。
如果我们要从开头开始显示的话
我们使用命令list 0
在这里插入图片描述
敲一下回车,再显示剩余的一部分代码

2.run(r)指令 调试

开始调试,如果没有设置断点,就直接运行结束!
在这里插入图片描述
没有断点直接运行结束
在这里插入图片描述有断点就运行到断点处

3.break point (b)指令 打断点(方式之一)

b 行数k 在第k行打一个断点
在这里插入图片描述

4. info b 查看断点

在这里插入图片描述

5.d 删除断点

删除断点是删除断点编号,与查看断点结合。
在这里插入图片描述
如果删除行号的话,是没有用的。在这里插入图片描述
删除编号为1的断点。

6.next(n) 逐过程(VS的F10)

在这里插入图片描述在这里插入图片描述
r运行到断点16行处,n逐过程到17行。

7.step(s)逐语句 (VS中的F11)

在这里插入图片描述
s进入到函数内部去。

8.p 打印变量内容

p变量名:打印变量内容
在这里插入图片描述

9.bt:查看当前的调用堆栈

在这里插入图片描述

10.finish

将当前函数跑完
在这里插入图片描述
在函数内部的时候 使用finish,跑完整个函数。

11.display 长显示.

类似于VS中的监视窗口

12.undisplay 取消长显示

undisplay 加 长显示编号。

13.continue© 断点跳到断点

在这里插入图片描述
在这里插入图片描述

14.disable/enable 断点编号:使能(关闭和打开) 断点

在这里插入图片描述
关闭断点的意思 并不是删除断点,而是暂时使断点失效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值