1.gdb是什么?为什么要熟悉gdb调试?
gdb(GNU调试器)是一个强大的调试工具,允许开发者在程序运行时检查和修改变量的值,单步执行代码,设置断点,以及查看程序的状态。可以比较偏激的说如果是关注于linux下的开发和研究,基本上离不开gdb调试的。
2.在各平台下的gdb下载和安装方式
2.1:window平台的下载方式:
在windows平台中,直接登入官方的文档---https://www.sourceware.org/gdb/download/(页面如图2.1.1所示)。注意:此处需要选择和自己系统对应的版本下载但一般选择最新的1-2个版本即可,下载完成以后将安装包放置在桌面的下载文档中即可。
(图2.1.1)
2.2:Linux和Ubuntu的下载方式:
在linux和Ubuntu操作系统上安装gdb调试工具时,多使用命令行输入指令。并且如果是初次使用需要更新下载源(避免不必要的麻烦)
2.2.1 :下载源更新:
ps:在Linux和Ubuntu操作系统中,由于下载便捷是优势之一。但切记要开启root权限,不然在一些情况下会出现输入指令正确,但不执行的情况(所以不如在下载的过程中都开启root权限)。开启方法如下:
1.打开终端,输入: su ,然后输入密码从而开启root权限(如图2.1.2)
2.打开终端,在要输入的指令前添加:sudo 字段开启root权限(如图2.1.2)
此处我们选择第二种方式,打开终端指令,输入: sudo apt update ,从而更新系统下载源(图2.1.3)
(2.1.2)
(2.1.3)
2.2.2:gdb下载(此处效果是根据Ubuntu来展示的):
当完成下载源更新以后,直接输入 sudo apt install gdb 安装gdb工具,这里系统会要求你输入yes/no来确认是否下载,输入yes即可(图2.1.4)。(这里因为已经是最新版本了所有没有这一步)
(2.1.4)
3.常用的使用方法和指令:
3.1:测试项目的创建:
当在虚拟机上安装完成gdb调试以后,接下来对于基本命令进行解答
在开始对于基本的gdb调试指令的介绍前,先在Ubuntu操作系统中创建一个名为 test.c的文件。
接下来我们需要编写一段c语言代码在文档中,这里我们编写一个非常简单的能实现依次输出1234数字功能的代码,然后使用gdb来进行调试。代码和效果图如下:
#include<stdio.h>
int main()
{
int arr[4] = {1,2,3,4};
int i=0;
for(i=0;i<4;i++)
{
printf("%d\n",arr[i]);
}
return 0;
}
接下来开始使用gdb调试 ,开启gdb调试,预编译的语句是:gcc +(要运行的代码所在文件名称)。这里我们的代码名词叫test.c.所以输入gcc test.c进行预编译,然后接下我们就需要让系统输出结果,指令格式为:./a.out。 这样最后就输出想要的结果:
3.2:GDB调试基本指令:
3.2.1:r(程序运行):
run指令但直接输入r也可以实现同样的效果:该指令是让程序在GDB调试模式下运行起来。效果如下:
这里r指令,仅仅只是让程序运行起来。如果程序存在错误,那么会直接报错出来
3.2.2:l(显示代码) :
l指令本质上和Linux操作系统中的cat指令是一样的,对于代码进行读取的作用。但需要关注的一个点是,如果运行l指令,不给出行号限定的话。系统只会一次输出20行的代码。具体效果如下:(仔细看两端l指令的表示效果)
3.2.3:b(断点)/info(查看断点情况)
在进行大工程,多线程的开发过程中。在代码出现bug,修复的过程中需要大量的通过断点的方式来确认各段代码的效果。那么这里的b(break)指令就能满足此需求。格式为,b+(所需要设置断点的代码行数),最后我们再用info指令来查看断点的信息。具体效果如下:
总结:
本章节详细介绍了,GDB调试的作用和意义,并且介绍了基础的GDB调试的命令行指令的使用。如果对于GDB调试命令行指令还想有更深入的了解,可以关注私信我。会长期更新。
对于Ubuntu,linux操作系统会继续连续的更新分享。后续也会对于在此操作系统中对各类嵌入式开发元器件的调试等进行分享