Linux之基础开发工具gdb调试器的使用(三)

文章目录

  • 一、Linux调试器-gdb使用
    • 1、安装gdb
    • 2、背景
    • 3、Debug和release
    • 4、区分Debug和release
  • 二、Linux调试器-gdb命令演示
    • 1、显示指定行之后的代码(自动记录最后一条指令)
    • 2、断点
      • 1、打印断点
      • 2、查看断点
      • 3、删除断点
      • 4、使能(禁用/开启)断点
    • 3、直接运行结束
    • 4、逐过程(f10)、逐语句(f11)
    • 5、显示内容
    • 6、范围查找
    • 7、查看调用堆栈
  • 总结


一、Linux调试器-gdb使用

1、安装gdb

yum install -y gdb

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

2、背景

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

release模式下的gdb演示,无法调试

在这里插入图片描述

加上 -g 选项,显然成功

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

3、Debug和release

Debug形成的可执行程序会给我们增加调试信息,内存变大,而release形成的可执行程序会给我们去掉调试信息,内存变小。
而用户不需要调试信息,他们需要更快的下载和安装,所以有了Dubug和release两个版本

4、区分Debug和release

release下的可执行程序

在这里插入图片描述>Debug下的可执行程序

在这里插入图片描述

最直观区分

在这里插入图片描述


二、Linux调试器-gdb命令演示

1、显示指定行之后的代码(自动记录最后一条指令)

想显示更多代码需 l+行号 然后一直回车
在这里插入图片描述

2、断点

1、打印断点

打印断点一共三种方式,接下来一一介绍。

b+行号

在这里插入图片描述

b+函数名+行号
在这里插入图片描述

b+文件名+行号(适用于多文件下)

在这里插入图片描述

2、查看断点

在这里插入图片描述

3、删除断点

注意在删除断点中,显示的是编号,而不是行号。
在这里插入图片描述

4、使能(禁用/开启)断点

禁用

在这里插入图片描述

开启

在这里插入图片描述

3、直接运行结束

在这里插入图片描述

4、逐过程(f10)、逐语句(f11)

逐过程

在这里插入图片描述

逐语句

在这里插入图片描述

5、显示内容

只显示一次

在这里插入图片描述

常显示

在这里插入图片描述

取消常显示

在这里插入图片描述

6、范围查找

切换下一个断点

在这里插入图片描述

将函数运行结束

在这里插入图片描述

在一个指定范围内,运行到指定行

在这里插入图片描述

7、查看调用堆栈

在这里插入图片描述


总结

在这里插入图片描述

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

智能一体化管网水位监测仪怎么样?

城市排水管网是城市正常运行的关键环节,这是地上和地下通道的连接点,一旦出现问题便会影响城市生命线建设的工程进展。在复杂的地下管道内想要了解水位数据,对于政府部门来讲是一个管理难题。如果可以采取智能产品在其中发挥作用,…

docker.service配置docker镜像加速

加速器配置方法很多,小白我用的是docker.service文件,所以直接在里面配置啊 配置以后,要systemctl daemon-reload下 ,然后docker info 下看下镜像地址是否是自己已配置的 docker run --privilegedtrue --name mytomcat -p 8080…

改进YOLO系列 | YOLOv5/v7 引入反向残差注意力模块 iRMB | 《ICCV 2023 最新论文》

论文地址:https://arxiv.org/abs/2301.01146 代码地址:https://github.com/zhangzjn/EMO 本论文着重于开发现代、高效、轻量级的模型,用于进行密集预测,同时在参数、FLOPs和性能之间进行权衡。倒置残差块(IRB)作为轻量级CNN的基础设施,但在基于注意力的研究中尚未找到对…

电脑版微信收到的图片怎么样自动保存到指定文件夹中?

8-5 在平时的工作中,如果你每天都需要接收并保存很多同事发来的图片,如何实现自动保存在微信上接收到的图片呢?本文的方法也许适合你,它可以自动把微信上收到的图片、视频、文件帮你保存到指定地方,可以大大地提高工作…

Pinia 状态管理器 菠萝:Option Store风格

Pinia介绍: Pinia 是 Vue 的专属状态管理库,它允许你跨组件或页面共享状态。 Pinia 大小只有 1kb 左右,超轻量级,你甚至可能忘记它的存在! 相比 Vuex,Pinia 的优点: 更贴合 Vue 3 的 Composition API 风…

No185.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

STM32 寄存器配置笔记——GPIO配置输出

一、概述 本文主要介绍GPIO 作为输出时的寄存器配置。包括时钟配置,输出模式配置。以STM32F10xxx系列为例,配置PA8、PD2端口作为输出,输出高/低电平。 二、配置流程 1)GPIO外设时钟 通过查找STM32F10xxx中文参考手册得知&#xf…

【Python大数据笔记_day07_hive中的分区表、分桶表以及一些特殊类型】

分区表 分区表的特点/好处:需要产生分区目录,查询的时候使用分区字段筛选数据,避免全表扫描从而提升查询效率 效率上注意:如果分区表在查询的时候呀没有使用分区字段去筛选数据,效率不变 分区字段名注意:分区字段名不能和原有的字段名重复,因为分区字段名要作为字段拼接到表后…

Postman常见报错与解决方法,持续更新~

postman中文文档 基本操作:从控制台查看请求报错 如果 Postman 无法发送你的请求,或者如果它没有收到你发送请求的 API 的响应,你将收到一条错误消息。此消息将包含问题概述和指向控制台的链接,你可以在其中访问有关请求的详细信…

HelloGitHub 社区动态,开启新的篇章!

今天这篇文章是 HelloGitHub 社区动态的第一篇文章,所以我想多说两句,聊聊为啥开启这个系列。 我是 2016 年创建的 HelloGitHub,它从最初的一份分享开源项目的月刊,现如今已经成长为 7w Star 的开源项目、1w 用户的开源社区、全网…

Spring Cloud和Kubernetes + Spring Boot 用哪个?

Spring Cloud和Kubernetes Spring Boot都是用于构建微服务架构的解决方案,它们各有优势和不足,选择哪个更好取决于你的具体需求和上下文。 Spring Cloud是一个基于Spring Boot的微服务开发框架,它提供了一套完整的微服务解决方案&#xff0…

Flink SQL自定义表值函数(Table Function)

使用场景: 表值函数即 UDTF,⽤于进⼀条数据,出多条数据的场景。 开发流程: 实现 org.apache.flink.table.functions.TableFunction 接⼝实现⼀个或者多个⾃定义的 eval 函数,名称必须叫做 eval,eval ⽅法…

TCP发送窗口、接收窗口以及其工作原理

1*KvfIrP_Iwq40uVdRZYGnQg.png 上面的图表是从发送方的角度拍摄的快照。我们可以将数据分为4组: 1.已发送并已确认的字节(蓝色)2.已发送但尚未确认的字节(黄色)3.未发送但接收方准备好接收的字节(绿色&…

2.如何实现API统一响应-web组件篇

文章目录 1. 统一响应1.1 CommonResult 1. 统一响应 前端调用api接口获得统一的响应: 成功,返回成功的状态码和数据;失败,返回失败的状态码和错误提示。 在标准的 RESTful API 的定义,是推荐使用 HTTP 响应状态码 (…

KCC@广州与 TiDB 社区联手—广州开源盛宴

10月21日,KCC广州与 TiDB 社区联手,在海珠区保利中悦广场 29 楼召开了一次难忘的开源盛宴。这不仅仅是 KCC广州的又一次线下见面,更代表着与 TiDB 社区及广州技术社区的首次深度合作。 活动的策划与组织由 KCC广州负责人 - 惠世冀、PingCAP 的…

归并排序 图解 递归 + 非递归 + 笔记

前置知识:讲解019-算法笔试中处理输入和输出,讲解020-递归和master公式 (1)左部分排好序,右部分排好序,利用merge过程让左右整体有序(2)merge过程:谁小拷贝谁,直到左右两部分所有的数字耗尽(3)递归实现和非递归实现(4…

浙大恩特客户资源管理系统 fileupload.jsp 任意文件上传

一、漏洞描述 杭州恩软信息技术有限公司(浙大恩特)提供外贸管理软件、外贸客户管理软件等外贸软件,是一家专注于外贸客户资源管理及订单管理产品及服务的综合性公司。 浙大恩特客户资源管理系统中的fileupload.jsp接口存在安全漏洞&#xf…

vue3 开启 https

1、安装mkcert证书创建器 npm i mkcert -g 2、检验是否安装成功 mkcert --version 有版本好出现则成功 3、创建证书颁发机构 mkcert create-ca 会在当前目录生成,ca.crt 和 ca.key 两个文件 4、创建证书 mkcert create-cert 会在当前目录生成,…

如何使用 NFTScan NFT API 在 zkSync 网络上开发 Web3 应用

zkSync 是由 Matter Labs 创建的,是一个以用户为中心的 zk rollup 平台,它是以太坊的第 2 层扩展解决方案,使用 zk-rollups 作为扩展技术,与 optimistic rollups 一样,zk-rollups 将会汇总以太坊主网上的交易并将交易证…