Linux: GDB 调试工具

 

目录

概念:

Linux 下 debug 和 release 的区别:

GDB 的使用 : 

激活和进入工作模式:

 查看文件的内容:

运行调试的文件: 

打断点: 

 查看断点:

删除断点:

禁用断点:

​编辑

重新打开断点:

 逐过程 与 逐语句:

查看变量/监视功能: 

常显示: 

运行至下一个断点:

转跳行数: 

停止运行:


概念:

Linux GDB(GNU Debugger)是一个功能强大的调试工具,用于调试C、C++等编程语言的程序。它可以帮助开发人员定位和修复程序中的错误。

换句话而言,GDB 的功能就和VS中的调试功能一样,可以对C、C++代码进行调试。

Linux 下 debug 和 release 的区别:

在linux 编译语言的过程中,我们一般会使用gcc 命令将文件编译成可执行文件,但是,在编译文件的过程中,编译的文件分为两种,分别是debug文件和release文件,对于两种文件而言,前者是面向编译者,后者是面向客户。

而Linux是一种面向对象的语言,所以在编译的过程中,gcc一般都是使用release 作为默认的编译。

release模式下 编译的文件 比 debug模式下 编译的文件 内存要更小  

使用 -g 将gcc的编译模式从release 转变成 debug 

GDB 的使用 : 

激活和进入工作模式:

gdb 需要调试的文件

由于 gdb 是Linux系统默认自带的,所以只需要输入以上指令 进行激活即可使用。

进入 gdb 的工作模式后,可以使用命令 quit 或者  q 即可退出gdb 的工作模式,也就是退出调试 

quit  //q

 查看文件的内容:

list  //l

在进入 gdb 的工作模式后,使用list 命令 或者 l 命令 可以对 需要调试的文件进行内容的查看。

不过需要注意的是,只需要list 命令,并不需要输入其他的内容,以下是错误的示范:

同时,可以看到,在使用list 命令后 文件展示的内容只有十行, 并不是全部,所以想要查看其他行的内容,则可以使用 命令 :  list 行号 或者  list 文件名 : 关键字   又或者 list 文件名 : 行号  对文件内容进行具体的查看

list  行号  // l 行号 

list 文件名 : 关键字  // l 文件名 :关键字 

list 文件名 : 行号 // l 文件名 : 行号

list 文件名 :关键字 

list 文件名 : 行号 

list 行号 

当然,如果想要查看全文,那么只要输入文件开头的行号,随后一直摁下回车即可。 

同时需要注意的是,输入行号并不是直接以哪一行开头,而是会出现哪一行的相关上下行。 

运行调试的文件: 

run  // r

使用 r 或者 run 命令 对调试文件进行运行! 

不过,r命令 的运行 是直接启动到结束,如果需要查看某段代码的内容,或者对代码进行逐句的调试,则需要使用断点命令。 

打断点: 

b 需要打断点的代码行数

 使用命令  b 行数 或者 b 文件名 : 行数 或者 b 文件名 :关键代码  即可打上断点。

 查看断点:

使用 i b 或者 info b 对 断点进行查看,且需要注意的是,如图上图所示,在每一个断点的最前端,都有一个编号,这个编号一但被某个断点占用,那么其他断点就不会使用这个编号!

且之后的删除断点也和断点编号有关! 

删除断点:

使用 d 断点编号 即可删除 断点,同时需要注意,断点不能连续删除!

禁用断点:

disable  断点编号

可以看到 矢能 end 从 y 变成了n 表示禁用了!同时还要记住空行打断点是没有用的!

重新打开断点:
 enable 断点编号 

 逐过程 与 逐语句:

使用 n 或者 next 进行调试的逐过程,相当于VS中的F10进行代码的调试,使用的步骤是先使用 r 命令 进入运行阶段后,因为断点的原因,在使用n 进行代码的调试。 

同时可以使用 s 命令 对代码进行逐语句的调试,相当于VS 中的F11 

查看变量/监视功能: 

使用p 命令可以对 代码 中的变量进行监视 或者说查看变量当前的数据

p 需要监视的变量     //查看变量当前的数值
p &需要查看的变量   //查看变量的地址

常显示: 

 display 需要显示的变量,常显示顾名思义,就算需要显示的变量会在运行的代码下方显示,当然想要去掉常显示则使用 undisplay 需要取消常显示的变量的编号

常显示后,变量发生了变化显示的内容也会发生变化!如下图所示! 

注意,编号: 是常显示的内容,行号 是代码运行的内容 

运行至下一个断点:

 使用 c 或者 contine 命令 从当前断点转跳到下一个断点!

转跳行数: 

使用 until 行号 命令 转跳到指定行号进行运行,之前几行代码会立马执行完毕到当前的指定行。

停止运行:

finish 命令 可以时运行停下。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

17.3.1.3 灰度

版权声明:本文为博主原创文章,转载请在显著位置标明本文出处以及作者网名,未经作者允许不得用于商业目的。 灰度的算法主要有以下三种: 1、最大值法: 原图像:颜色值color(R,G,B&a…

wayland(xdg_wm_base) client 使用 dmabuf 最简实例

文章目录 前言一、zwp_linux_dmabuf_v1 协议二、wayland client 使用 zwp_linux_dmabuf_v1 协议传递dma-buf代码实例1. wayland_dmabuf.c 代码实例2. xdg-shell-protocol.c 和 xdg-shell-client-protocol.h3. linux-dmabuf-unstable-v1-client-protocol.h 和 linux-dmabuf-unst…

如何在JavaScript中使用大于和小于运算符

在你的 JavaScript 程序中,你经常需要比较两个值,以确定一个是否大于另一个或小于另一个。这就是大于和小于运算符派上用场的地方。 在本文中,我们将通过代码示例更详细地介绍如何使用这些运算符。 (本文内容参考:ja…

Stable Diffusion 模型下载:Beautiful Realistic Asians(美丽真实的亚洲人)

本文收录于《AI绘画从入门到精通》专栏,专栏总目录:点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八案例九案例十 下载地址 模型介绍 Beautiful Realistic Asians(BRA)模型是由作者自己训练…

阿里云服务器租用价格 2024年新版活动报价及租用收费标准

2024年最新阿里云服务器租用费用优惠价格表,轻量2核2G3M带宽轻量服务器一年61元,折合5元1个月,新老用户同享99元一年服务器,2核4G5M服务器ECS优惠价199元一年,2核4G4M轻量服务器165元一年,2核4G服务器30元3…

NumPyML 源码解析(四)

numpy-ml\numpy_ml\neural_nets\utils\__init__.py """ 神经网络特定的常见辅助函数。neural_nets.utils 模块包含神经网络特定的辅助函数,主要用于处理 CNNs。 """# 从当前目录下的 utils 模块中导入所有内容 from .utils import *…

天锐绿盾|防泄密系统|计算机文件数据\资料安全管理软件

“天锐绿盾”似乎是一款专注于防泄密和计算机文件数据/资料安全管理的软件。在信息安全日益受到重视的今天,这样的软件对于保护企业的核心数据资产和防止敏感信息泄露至关重要。 通用地址:www.drhchina.com 防泄密系统的主要功能通常包括: 文…

组合数的计算

1.由定义式直接算&#xff1a;n!/m!*(n-m)! #include <iostream> using namespace std; long long combine(long long m,long long n ){long long result1;for(int i1;i<n1;i){//n!result*i;}for(int i1;i<m1;i){//n!/m!result/i;}for(int i1;i<n-m1;i){//n!/(…

红蓝对抗:网络安全领域的模拟实战演练

引言&#xff1a; 随着信息技术的快速发展&#xff0c;网络安全问题日益突出。为了应对这一挑战&#xff0c;企业和组织需要不断提升自身的安全防护能力。红蓝对抗作为一种模拟实战演练方法&#xff0c;在网络安全领域得到了广泛应用。本文将介绍红蓝对抗的概念、目的、过程和…

问卷设计初探:题目类型概览与注意事项梳理

问卷法常被人们应用于社会调查中&#xff0c;它能反馈出最真实的社会信息。所以&#xff0c;很多企业为了最大程度地了解市场&#xff0c;也经常使用问卷调查法进行研究。不过&#xff0c;想要发挥出问卷法的最大用处&#xff0c;前提是要将问卷设计规范并且可量化。 想要设计…

【漏洞复现】企语iFair协同管理系统任意文件读取漏洞

Nx01 产品简介 企语iFair协同管理系统是一款专业的协同办公软件&#xff0c;该管理系统兼容性强&#xff0c;适合多种企业类型。 Nx02 漏洞描述 企语iFair协同管理系统存在任意文件读取漏洞&#xff0c;未经身份认证的攻击者可以通过此漏洞获取服务器敏感信息。 Nx03 产品主页…

租房招聘|在线租房和招聘平台|基于Springboot的在线租房和招聘平台设计与实现(源码+数据库+文档)

在线租房和招聘平台目录 目录 基于Springboot的在线租房和招聘平台设计与实现 一、前言 二、系统功能设计 三、系统实现 1、房屋管理 2、招聘管理 3、平台资讯管理 4、平台资讯类型管理 四、数据库设计 1、实体ER图 六、论文参考 七、最新计算机毕设选题推荐 八、源…

小白必看,总结前端所有主流的构建工具,webpack / vite / roollup / esbuild,包含源码,建议关注+收藏

前言 本篇文章旨在总结前端常见的构建工具&#xff0c;构建工具是前端工程化中的重要的组成部分。 在实际项目中&#xff0c;我们初始化项目&#xff0c;一般是使用脚手架命令一键生成的&#xff0c;比如说使用 create-vue 初始化 vue 项目的时候&#xff0c;就会默认使用 vi…

力扣 123. 买卖股票的最佳时机 III

题目来源&#xff1a;https://leetcode.cn/problems/best-time-to-buy-and-sell-stock-iii/description/ C题解&#xff1a;动态规划。至多买卖两次&#xff0c;这意味着可以买卖一次&#xff0c;可以买卖两次&#xff0c;也可以不买卖。 一天一共就有四个状态&#xff1a; 第…

报文鉴别、实体鉴别

目录 鉴别 1 报文鉴别 1.1 用数字签名进行鉴别&#xff08;原理&#xff09; 可保证机密性的数字签名 1.2 密码散列函数 MD5 算法 MD5 算法计算步骤 安全散列算法 SHA-1 1.3 用报文鉴别码实现报文鉴别 用报文鉴别码 MAC 鉴别报文 使用已签名的报文鉴别码 MAC 对报…

论文阅读:MotionNet基于鸟瞰图的自动驾驶联合感知和运动预测

MotionNet: Joint Perception and Motion Prediction for Autonomous Driving Based on Bird’s Eye View Maps MotionNet&#xff1a;基于鸟瞰图的自动驾驶联合感知和运动预测 论文地址&#xff1a;MotionNet: Joint Perception and Motion Prediction for Autonomous Drivi…

【AI视野·今日CV 计算机视觉论文速览 第294】Mon, 22 Jan 2024

AI视野今日CS.CV 计算机视觉论文速览 Mon, 22 Jan 2024 Totally 64 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computer Vision Papers Depth Anything: Unleashing the Power of Large-Scale Unlabeled Data Authors Lihe Yang, Bingyi Kang, Zilong Huang, X…

vue3-组合式 API

什么是组合式 API&#xff1f; 组合式 API (Composition API) 是一系列 API 的集合&#xff0c;使我们可以使用函数而不是声明选项的方式书写 Vue 组件。它是一个概括性的术语&#xff0c;涵盖了以下方面的 API&#xff1a; 响应式 API&#xff1a;例如 ref() 和 reactive()&a…

如何在UI自动化测试中加入REST API的操作

1、问题 当我们描述一个“好的自动化测试用例”时&#xff0c;经常出现标准是&#xff1a; 精确 自动化测试用例应该测试一件事&#xff0c;只有一件事。与测试用例无关的应用程序的某个部分中的错误不应导致测试用例失败。 独立 自动化测试用例不应该受测试套件中任何其他…

车载软件架构 —— Adaptive AUTOSAR软件架构中通信管理、诊断管理策略

车载软件架构 —— Adaptive AUTOSAR软件架构中通信管理、诊断管理策略 第四篇 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师(Wechat:gongkenan2013)。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 本就是小人物,输了就是输了,不要在意…