【linux基础】linux中的开发工具(4)--调试器gdb的使用

目录

  • 前言
  • 一,背景
  • 二,gdb的使用
    • 1. 启动 gdb 调试器:
    • 2. 罗列代码信息
    • 3. 运行程序
    • 4. 有关断点的操作
      • (1) 打断点
      • (2) 查看断点
      • (3) 删除断点
      • (4) 在一次调试中,断点是递增的
      • (5) 关闭断点
      • (6) 开启断点
      • (7) 逐过程调试,相当于 F10
      • (8) 逐语句调试,相当于 F11
      • (9) 查看变量或地址,相当于监视窗口
      • (10) 在调试中,常显示变量的值或地址
      • (11) 取消常显示
      • (12) 运行到下一个断点处
      • (13) 直接运行结束所在函数,就停下
      • (14) 跳转至指定行,运行中间代码
      • (15) 退出 gdb

前言

通过前面的学习我们已经会通过vim,gcc/g++和makefile构建出完整的代码程序了,但是光写出代码还不够,代码运行出错了该怎么调试呢?本篇文章就会介绍linux中的调试器–gdb的使用。

一,背景

(1) 程序的发布方式有两种,debug模式和release模式。
(2) Linux 中 gcc/g++出来的二进制程序,默认是release模式。
(3) 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

在这里插入图片描述

下面来查看增加的一些调试信息:

在这里插入图片描述
在这里插入图片描述

二,gdb的使用

1. 启动 gdb 调试器:

使用:gdb 调试文件

在这里插入图片描述

2. 罗列代码信息

方式1:

使用:l 文件名: 数字 或者 l 文件名: 函数名

在这里插入图片描述

方式2:

使用:l 文件名: 0,再一直按回车

在这里插入图片描述

方式3:

使用:l 数字 .查找指定行

在这里插入图片描述

3. 运行程序

使用: r

在这里插入图片描述

4. 有关断点的操作

这里先罗列出调试文件代码,下面将根据这份代码进行有关断点的操作。
在这里插入图片描述

(1) 打断点

在这里插入图片描述

(2) 查看断点

在这里插入图片描述

(3) 删除断点

在这里插入图片描述

(4) 在一次调试中,断点是递增的

在这里插入图片描述

(5) 关闭断点

在这里插入图片描述

(6) 开启断点

在这里插入图片描述

(7) 逐过程调试,相当于 F10

在这里插入图片描述

(8) 逐语句调试,相当于 F11

在这里插入图片描述

(9) 查看变量或地址,相当于监视窗口

在这里插入图片描述

(10) 在调试中,常显示变量的值或地址

在这里插入图片描述

(11) 取消常显示

在这里插入图片描述

(12) 运行到下一个断点处

在这里插入图片描述

(13) 直接运行结束所在函数,就停下

在这里插入图片描述

(14) 跳转至指定行,运行中间代码

在这里插入图片描述

(15) 退出 gdb

直接输入 quit 即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1536142.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Redis模拟消息队列实现异步秒杀

目录 一、消息队列含义 二、Redis实现消息队列 1、基于List的结构模拟实现消息队列 2、基于PubSub的消息队列 3、基于Stream的消息队列 4、基于Stream的消息队列- 消费者组 一、消息队列含义 消息队列(Message Queue),字面意思就是存放…

MyBatis中一对多关系的两种处理方法

目录 1.多表联查(通过collection标签的ofType属性) 1)mapper 2)mapper.xml 3)测试代码 4)测试结果 2.分布查询(通过collection标签的select属性) 1)mapper 2)mapper.xml 3&#xff0…

优化算法(三)—模拟退火算法(附MATLAB程序)

模拟退火算法(Simulated Annealing, SA)是一种基于概率的优化算法,旨在寻找全局最优解。该算法模拟金属退火过程中的物质冷却过程,逐渐降低系统的“温度”以达到全局优化的效果。它特别适用于解决复杂的组合优化问题。 一、模拟退…

[产品管理-21]:NPDP新产品开发 - 19 - 产品设计与开发工具 - 详细设计与规格定义

目录 前言: 一、详细设计与规格定义概述 1、产品详细设计 2、规格定义 3、详细设计与规格定义的关系 4、实际应用中的注意事项 二、详细设计与规格定义主要工具 2.1 质量功能展开QFD - 需求跟踪矩阵 1、QFD的基本原理 2、QFD的实施步骤 3、QFD的优势与应…

人工智能开发实战matplotlib库应用基础

内容导读 matplotlib简介绘制直方图绘制撒点图 一、matplotlib简介 matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成高质量的图形。 matplotlib 尝试使容易的事情变得更容易,使困难的事情变得可能。 我们只需几行代码…

解锁全球机遇:澳大利亚服务器租用市场的独特魅力

在浩瀚的全球数字版图中,澳大利亚以其独特的地理位置、丰富的资源禀赋、以及日益增长的数字经济活力,成为了众多互联网企业竞相布局的重要市场。特别是当谈及服务器租用这一关键环节时,澳大利亚以其稳定的网络环境、先进的基础设施和开放的市…

[数据集][目标检测]智慧交通铁路异物入侵检测数据集VOC+YOLO格式802张7类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):802 标注数量(xml文件个数):802 标注数量(txt文件个数):802 标注类别…

知识竞赛活动舞台搭建要多少钱

每次举办活动,舞台搭建总是让人头疼的一部分,尤其是费用问题。今天就来揭开活动舞台搭建费用的神秘面纱。 活动舞台搭建的费用主要包括舞台结构、设备、音响、灯光、舞美装饰等各方面的成本。具体来说: 1.舞台结构:包括舞台平台…

5.TensorBoard的使用(二)--add_image()

TensorBoard的使用(二) 1.使用add_image()给添加图片 首先导入Tensorboard包 from torch.utils.tensorboard import SummaryWriter创建一个SummaryWriter类的实例,并将所有的事件文件保存在logs文件夹中 writer SummaryWriter(logs)使用add…

完整版订单超时自动取消功能

前几天对实习还是继续学习技术产生了抉择,问了一个前辈,他抛给我一个问题,怎么做15分钟订单自动取消,我说然后到时间之后,自动执行这个订单关闭业务,比如把锁了的库存给解开等等操作,然后在数据…

【算法篇】哈希类(笔记)

目录 一、常见的三种哈希结构 二、LeetCode 练习 1. 有效的字母异位词 2. 两个数组的交集 3. 快乐数 4. 两数之和 5. 四数相加II 6. 赎金信 7. 三数之和 8. 四数之和 一、常见的三种哈希结构 当想使用哈希法来解决问题的时候,一般会选择如下三种数据…

4.接口测试基础(Jmter工具/场景二:一个项目由多个人负责接口测试,我只负责其中三个模块,协同)

一、场景二:一个项目由多个人负责接口测试,我只负责其中三个模块,协同 1.什么是测试片段? 1)就相当于只是项目的一部分用例,不能单独运行,必须要和控制器(include,模块)一…

C++——哈希unordered_set/unordered_map的封装

目录 前言 二、unordered_set的封装 1.模板参数列表的改造 2. 增加迭代器操作 3. 模板参数的意义 三、unordered_map的封装 1、“轮子所需要的参数 2、迭代器 四、完整代码 1、HashTable 2、unordered_set 3、unordered_map 总结 前言 unordered_set和map的介绍在上一篇博客有…

2、.Net 前端框架:ASP.Net Core - .Net宣传系列文章

ASP.NET Core 是一个跨平台、高性能、开源的框架,用于构建现代化的、基于云的、互联网连接的应用程序。它是微软对原始ASP.NET框架的重构和扩展,提供了更多的灵活性和改进的性能。ASP.NET Core 可以用于开发Web应用程序、Web API、以及服务端渲染的Web页…

windows系统docker装milvus向量数据库

首先创建一个文件夹比如milvus,在创建如下文件 docker-compose.yml文件如下: version: 3.5services:etcd:container_name: milvus-etcdimage: quay.io/coreos/etcd:v3.5.5environment:- ETCD_AUTO_COMPACTION_MODErevision- ETCD_AUTO_COMPACTION_RETENTION1000- ETCD_QUOTA_B…

计算机毕业设计hadoop+spark+hive物流预测系统 物流大数据分析平台 物流信息爬虫 物流大数据 机器学习 深度学习

流程:1.Python爬虫采集物流数据等存入mysql和.csv文件;2.使用pandasnumpy或者MapReduce对上面的数据集进行数据清洗生成最终上传到hdfs;3.使用hive数据仓库完成建库建表导入.csv数据集;4.使用hive之hive_sql进行离线计算&#xff…

Qt常用控件——QComboBox

文章目录 核心属性、方法、信号模拟点餐文件加载 核心属性、方法、信号 QComboBox表示下拉框 核心属性: 属性说明currentText当前选中文本currentIndex当前选中的条目下标editable是否允许修改设置为true时,QComboBox的行为就非常接近于QLineEdit&…

【智路】智路OS Airos Edge 2.0 Quick Start

Airos Edge 2.0 Quick Start 1 智路OS2.0 1.1 简介 智路OS路侧操作系统airos-edge自下而上分别由内核层,硬件抽象层、框架层、服务层和应用层构成;提供了一系列抽象和框架,支持设备接入、服务、应用等组件开发,兼容X86和ARM操作…

【光照增强论文略读】Zero-Reference Deep Curve Estimation for Low-Light Image Enhancement

这篇题为《用于低光照图像增强的零参考深度曲线估计》的论文介绍了一种名为Zero-DCE的创新方法,用于增强低光照图像。其主要创新点在于,它在训练过程中不需要成对或非成对的参考图像,因此是一种“零参考”方法。通过轻量级深度学习模型DCE-Ne…

SAP学习笔记 - 开发06 - CDSView + Fiori Element 之 List Report

上一章讲了Fiori UI5开发环境搭建和实践: - VSCode 安装Fiori Tools插件 - SEGW 创建后台程序,注册服务,Gateway Client确认服务 - 使用SEGW公开的服务来查询数据显示到页面 SAP学习笔记 - 开发05 - Fiori UI5 开发环境搭建2 Fiori Tools…