Linux C语言编程(下篇) | gdb的使用

前两篇Linux C语言编程(上篇) | gcc的使用Linux C语言编程(中篇) | make的使用讲述了在Linux下如何编译得到可执行程序,那么当程序执行结果不符合我们的预期时,如何进行调试呢?这个时候就要使用到gdb工具了~

1.gdb介绍

gdb也属于GNU项目的一部分,是一个调试工具,它的主要功能是:

  • 用户可以自定义如何运行程序
  • 可以在指定断点处运行停止
  • 可以检查各个变量的值
  • 可以动态改变程序的执行环境
    使用命令gdb -v查看系统中是否安装有gdb调试工具,若无,需要先安装:

以上一篇中的例子为例

2.使用gdb的前提

使用gdb调试可执行程序的时候,可执行程序必须要包含有相应的调试信息,这样我们调试的时候才能看到我们熟悉的名称,否则就是一堆内存地址,很不方便调试,那么如何得到带有调试信息的可执行程序呢?
其实很简单,在使用编译器(比如gcc)编译的时候带有-g参数就可以啦~
修改makefile文件如下:

然后重新执行make指令编译(若有可执行程序,先执行make clean清除):

3.gdb的使用

3.1.gdb启动调试

使用gdb <可执行程序名称>即可进入gdb调试环境,此处输入gdb cal,可以看到成功进入调试环境:
在这里插入图片描述

3.2.gdb调试命令

在gdb调试环境下,使用gdb调试命令进行调试,gdb的命令主要有以下几个:

命令 描述
list(l) 查看代码(默认一次显示10行)
break(b) 行号或函数名 设置断点
clear(c)行号或函数名 清除断点
ignore 断点号 num 忽略对应断点num次
info b 查看当前所设断点
r(run) 运行程序
n(next) 单步调试,不进入函数调用
s(step) 单步调试,进入函数调用
p(print)变量名 查看变量
display 变量名 每次自动显示该变量值
c(continue) 继续运行,直到结束或遇到新断点
finish 运行程序,直到当前函数完成返回
q(quit) 退出
shell command 执行shell命令

3.3.gdb调试实例

首先查看代码:

然后在第7行设置断点,注意设置了断点之后程序会停在第7行前,也就是不执行第7行

然后单步执行,但不进入函数,再次查看变量值:

猜你喜欢

转载自blog.csdn.net/Mculover666/article/details/84872598