【Linux】环境基础开发工具的使用之gdb详解(三)

卫卫周大胖; 2024-06-24 08:07:22 阅读 53

前言:上一篇文章中我们讲解了Linux下的gcc与g++的使用,今天我们将进一步的学习gdbmakefile来帮我们更好的理解与使用基础开发工具。

💖 博主CSDN主页:卫卫卫的个人主页 💞

👉 专栏分类:Linux的深度刨析 👈

💯代码仓库:卫卫周大胖的学习日记💫

💪关注博主和博主一起学习!一起努力!

在这里插入图片描述


目录标题

Linux下基础开发工具gdb调试方法1.启动gdb2.查看源代码3.运行程序4.设置断点5.查看断点信息6.执行下一行代码。7.查看变量8.退出gdb


Linux下基础开发工具

gdb调试方法

程序的发布方式有两种,debug模式和release模式

Linux gcc/g++出来的二进制程序,默认是release模式

要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

GDB是一个用于调试程序的强大工具,可以运行在Linux操作系统下。在Linux中,你可以通过以下步骤来安装和使用GDB:

打开终端。输入以下命令以安装GDB:sudo apt-get install gdb(请注意,这需要管理员权限)。安装完成后,你可以通过输入gdb命令来启动GDB调试器。接下来,你需要指定要调试的可执行文件。例如,如果你要调试一个名为program的程序,可以使用命令gdb program。GDB将会启动并等待你输入调试命令。你可以使用命令run来运行程序,然后使用其他命令来设置断点、查看变量的值等等。

以下是一些常用的GDB命令:

listl:查看源代码

breakb:设置断点。

info breakpoints :显示断点信息

runr:运行程序。

continuec:继续执行程序。

nextn:执行下一行代码。

steps:单步执行程序,进入函数调用。

printp:打印变量的值。

backtracebt:显示函数调用的堆栈跟踪。

quitq:退出GDB调试器。

display 表达式:在单步运行时将非常有用,使用display命令设置一个表达式后,它将在每次单步进行指令后,紧接着输出被设置的表达式及值。如: display n

watch 表达式:设置一个监视点,一旦被监视的“表达式”的值改变,gdb将强行终止正在被调试的程序。如: watch n(查看变量n)

whatis :查询变量或函数

info function: 查询函数

扩展info locals: 显示当前堆栈页的所有变量

这只是GDB的一些基本用法,GDB提供了很多功能,你可以通过查阅GDB的文档来了解更多详细的使用方法。


1.启动gdb

对于任何一个文件,必须在源代码生成二进制程序的时候, 加上 -g 选项

实例演示

对文件test.c的文件进行调试,调试的文件命名为test:gcc -g test.c -o test

启动gdb,命令如下:(两种方式)

gdb test //启动调试名称为test的文件,但是会显示版本信息gdb -q test //表示不打印gdb版本信息,界面较为干净;

运行图:

在这里插入图片描述

无版本信息指令:

在这里插入图片描述

2.查看源代码

listl:查看源代码

实例演示:

在这里插入图片描述


3.运行程序

runr:运行程序。

实例演示:

在这里插入图片描述


4.设置断点

breakb:设置断点, b 行号

删除断点:delete break_num

实例演示:

在这里插入图片描述

5.查看断点信息

info breakpoints :显示断点信息

实例演示:

在这里插入图片描述


6.执行下一行代码

nextn:执行下一行代码。

steps:单步执行程序,进入函数调用。

重复上一条命令:按下回车 。即每一次重复执行上一条指令时,不需要重复输入,只需回车即可。

附:报错”The program is not being run.”

程序没有自动开始运行,此时输入 start 即可开始调试,注意不要使用 run 命令

实例演示:

在这里插入图片描述


7.查看变量

printp:打印变量的值。

实例演示:

在这里插入图片描述


8.退出gdb

quitq:退出GDB调试器。

在这里插入图片描述

这只是GDB的一些基本用法,GDB提供了很多功能,你可以通过查阅GDB的文档来了解更多详细的使用方法。


好啦,今天的内容就到这里啦,下期内容预告make/makefile、进度条的讲解


结语:今天的内容就到这里吧,谢谢各位的观看,如果有讲的不好的地方也请各位多多指出,作者每一条评论都会读的,谢谢各位。


🌏🗺️ 这里祝各位寒假愉快 💞💞


声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。