第六章 linux调试器——gdb的使用

一、前提

1、debug与release

程序最终的发布方式分成两种,一种是debug模式,一种是release模式。通常情况下,g++/gcc编译后的可执行文件都是release模式,即发行模式。这两者有什么区别呢?debug模式是允许使用gdb来调试的,所以在debug模式中会含有一些调试信息,这种模式也通常是给程序员使用的。另外一种release模式叫做发行模式,这种模式是不包含调试信息的,所以无法用gdb调试,因此release模式通常是给用户使用的。

那么为了我们能用gdb来调试代码,我们需要在编译器的编译指令中加上-g。如下图所示:
在这里插入图片描述

2、gdb的安装

有的linux服务器中是没有gdb的,所以需要大家自行安装。因为作者使用的是乌班图的Linux,所以这里就贴一下乌班图的安装命令。

 sudo apt install gdb

二、常用调试指令

1、开始调试

我们需要在命令行中输入指令:

gdb 二进制可执行文件

如下图:
在这里插入图片描述
当我们开始调试以后,就可以输入一些gdb中的一些指令来debug了。

2、代码显示

l 行号                  //从第几行开始显示代码(往后显示10行),显示结束后,再按l,可以继续往后显示。
l 函数名                //列出某个函数代码

在这里插入图片描述

3、断点设置

b 行号                                           //在某一行设置断点
b 函数名                                         //在某个函数的开头设置断点
info break                                      //查看断点信息
delete breakpoints                              //删除所有断点
delete breakpoints                              //n删除序号为n的断点
disable breakpoints  断点编号                     //禁用断点
enable breakpoints   断点编号                     //启用断点

设置断点
在这里插入图片描述
查看或修改断点
在这里插入图片描述

4、代码执行

r                        // 运行程序。
n                        // 逐过程执行。
s                      	 // 逐语句执行。
until x                  //跳至x行
finish                   // 执行到当前函数返回,然后停下来等待后续的命令。

5、信息监控

p 变量                   // 打印变量的数值
set var                 // 修改变量的数值
c                       // 从当前位置开始连续而非单步执行程序
display 变量             // 跟踪查看变量,每次停下来都显示该变量的数值 
undisplay                //取消跟踪某个变量

6、退出调试

quit                        // 退出调试

猜你喜欢

转载自blog.csdn.net/weixin_72060925/article/details/131501768