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

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

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

d6dc0126edd141a985d72de501ef756b.jpg

Linux下基础开发工具

gdb调试方法

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

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

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

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

  1. 打开终端。
  2. 输入以下命令以安装GDB:sudo apt-get install gdb(请注意,这需要管理员权限)。
  3. 安装完成后,你可以通过输入gdb命令来启动GDB调试器。
  4. 接下来,你需要指定要调试的可执行文件。例如,如果你要调试一个名为program的程序,可以使用命令gdb program
  5. 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、进度条的讲解


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


相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
23天前
|
Ubuntu Linux Shell
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
(已成功解决)Linux环境报错—bash: wget: command not found;常见Linux发行版本,Linux中yum、rpm、apt-get、wget的区别;Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
224 68
(已解决)Linux环境—bash: wget: command not found; Docker pull报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled
|
3月前
|
安全 Linux 网络安全
Linux环境中安装和使用Paramiko
Linux环境中安装和使用Paramiko
200 12
|
3月前
|
Java 关系型数据库 MySQL
Linux环境
Linux环境
45 5
|
20天前
|
消息中间件 Java Kafka
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
本文介绍了Kafka集群的搭建过程,涵盖从虚拟机安装到集群测试的详细步骤。首先规划了集群架构,包括三台Kafka Broker节点,并说明了分布式环境下的服务进程配置。接着,通过VMware导入模板机并克隆出三台虚拟机(kafka-broker1、kafka-broker2、kafka-broker3),分别设置IP地址和主机名。随后,依次安装JDK、ZooKeeper和Kafka,并配置相应的环境变量与启动脚本,确保各组件能正常运行。最后,通过编写启停脚本简化集群的操作流程,并对集群进行测试,验证其功能完整性。整个过程强调了自动化脚本的应用,提高了部署效率。
【手把手教你Linux环境下快速搭建Kafka集群】内含脚本分发教程,实现一键部署多个Kafka节点
|
2月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
60 4
|
3月前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
675 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
2月前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
174 3
|
2月前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
79 3
|
3月前
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
90 6
|
2月前
|
Linux UED iOS开发