Linux c编程之gdb的使用

本文介绍了Linux下的调试工具gdb,包括如何在编译时添加-g参数以获取调试信息,进入gdb调试的两种方式,以及start、l、n、s、until、b、p、d、bt、c和watch等关键调试命令的使用,帮助读者掌握gdb的基础操作。
摘要由CSDN通过智能技术生成

GDB是什么?

gdb是在Linux的控制台窗口下的一个调试工具,功能十分强大,今天些简单的学习一下关于gdb的基本使用

gdb的基本使用

首先,用gcc编译程序时需要加上-g参数以便获取调试信息

首先要使用gdb调试程序,在用gcc编译时要加上-g参数,否则gdb会提示缺少调试信息。如下图:
在这里插入图片描述

因此,需要使用如下方法编译程序:

gcc -g test.c -o test

即加上gcc的-g参数。

接下来,进入gdb调试

使用如下命令进入gdb以便调试相关程序,有两种方式:
直接gdb 加上要调试的程序名
在这里插入图片描述
或者先进入gdb工具,之后再gdb中通过file ./文件名的方式打开要调试的程序。在这里插入图片描述

最后,通过gdb的相关命令进行单步调试程序

先放上本次将要介绍的几个关键字,后面进行具体解释。
在这里插入图片描述

start:如其字面意思一样,开始程序的调试,输入start程序将会从main函数中的第一句开始执行,并停在此处。如图:
在这里插入图片描述
l :即list的意思,列出当前上下5行的代码以便查看。如图:
在这里插入图片描述
n :Next,下一步(不进入函数),即顺序执行一条语句,若遇到函数将直接执行完整个函数,而不是进入函数内部。后面可以加上需要执行n的次数。

s :Step,同样是顺序执行语句,但和n区别是,若遇到函数将进入函数内部,进一步执行函数内部的每一条语句。同样,数字参数可以控制执行多少次s命令。

until n :n代表行号(或其他位置信息),即运行程序到第n行。

还可以添加相应位置的断点,以便快速运行到断点位置
b 文件名:行号(或函数):Breakpoint,b 后加上要添加断点的文件名和行号,就可以在相应位置上添加断点,可以使用b i查看当前所添加的所有断点,即breakpoint info。b命令还可以添加其他参数,例如指定线程的编号,添加条件判断等,这里不做过多介绍
完整使用方法如下

break [PROBE_MODIFIER] [LOCATION] [thread THREADNUM] [if CONDITION]

r :Run,使用r命令可以直接让程序顺序运行,直到遇到断点或者程序结束。

在遇到需要查看相关变量的信息时,可以使用p命令
p v:Print value,v代表想要查看的变量名,gdb将会返回相应变量的值并输出到标准输出设备上。

d:Delete,使用d可以删除全部断点,d 加上相应断点的编号可单独删除某断点。

bt: Backtrace,该命令可以查看函数栈。、

c:Continue,继续运行程序,当程序运行到断点处时,可以继续运行程序,而不是使用run重新运行程序。

watch v: v代表变量名,当变量中的值发生变化时,程序运行停止。

总结

以上就是gdb工具的简单使用。当然,这只是gdb工具的冰山一角,我们可以通过help all查看全部的指令,发现其功能还有很多。
若遇到不会的指令,还可以使用help command来查看帮助信息。

附:最常用的gdb指令的简单英文介绍(来自gdb-Red Hat Enterprise Linux 7.6.1-110.2018-04-11中的gdb帮助手册)在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值