猿创征文|【Linux】Linux中的gdb调试器的使用

news2024/10/6 2:22:57


目录

一、什么是gdb?

二、gdb的安装

三、gdb的使用

1、只有debug版可以被调试

2、gdb的常用指令

2.1显示代码:l指令(list指令)

2.2设置断点:b指令(break指令)

2.3显示断点/禁用断点/开启断点:info b指令/disable指令/enable指令

2.4删除断点:d指令(delete指令)

2.5执行代码:r指令(run指令)

2.6逐过程:n指令(next指令)

2.7逐语句:s指令(step指令)

2.8运行到下一个断点:c指令(continue指令)

2.9查看函数调用堆栈:bt指令

2.10跑完当前函数:finish指令

2.11临时查看变量:p指令

2.12长期监视/取消监视变量的值:display指令/undisplay指令

2.13跳转到某一行:until指令

2.14修改变量的值:set var指令

2.15显示当前函数内临时变量:info locals


一、什么是gdb?

gdb是Linux中的调试器。用于debug版本代码的调试

二、gdb的安装

sudo yum install gdb

三、gdb的使用

gdb debug版可执行文件

1、只有debug版可以被调试

因为Linux中生成的可执行程序默认是release版本,是不带debug调试信息的。

只有debug版可以被调试,那么我们在编译的时候需要加上-g选项,这样生成的可执行程序就是debug版。

我们可以使用readelf指令查看ELF格式的文件信息:

可以发现debug版本中有debug信息,这也是debug版比release版体积大的原因。

2、gdb的常用指令

2.1显示代码:l指令(list指令)

因为gdb的l指令并不是从第一行开始显示,如果想从第一行开始显示,可以输入l 0,这样就会在屏幕上显示10行代码。

gdb中会记忆上次输入的指令,按下回车键即可执行上一次的指令。

2.2设置断点:b指令(break指令)

b 18

b18表示在第18行设置断点。

2.3显示断点/禁用断点/开启断点:info b指令/disable指令/enable指令

info b指令会显示出所有的断点。Enb表示断点的状态,y表示断点正常使用,n表示断点已被禁用。

2.4删除断点:d指令(delete指令)

想要删除哪个断点不是看这个断点在代码中的行号,而是在断点列表的编号。这里要删除第2个断点,直接d 2即可。

2.5执行代码:r指令(run指令)

执行代码后会在断点处停下。

2.6逐过程:n指令(next指令)

就是vs中的F10。

2.7逐语句:s指令(step指令)

就是vs中的F11。

2.8运行到下一个断点:c指令(continue指令)

/

2.9查看函数调用堆栈:bt指令

/

2.10跑完当前函数:finish指令

finish可以挨个函数跑一遍,先粗略的确定是哪个函数的问题。

2.11临时查看变量:p指令

p 变量名

临时查看变量的值。

2.12长期监视/取消监视变量的值:display指令/undisplay指令

监视:

2.13跳转到某一行:until指令

因为15行是空行所以跳到了第16行。

需要在当前函数使用,不能乱跳转。

2.14修改变量的值:set var指令

set var i=50

修改i为50。

2.15显示当前函数内临时变量:info locals

显示当前函数内的临时变量。

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

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

相关文章

Linux操作系统~进程fork到wait到底怎么用?

目录 1.fork() (1).概念 (2).fork的写时拷贝 (3).fork常规用法 2.进程终止 (1).进程退出场景/退出码 (2).进程常见退出方法 1).exit函数 …

类与对象(中级)

目录 1. 包 1.1 包的概念 1.2 导入包中的类 1.3 自定义包 1.4 常见的包 2. Java三大特性 -- 封装 3. Java三大特性 -- 继承 3.1 继承的概念: 3.2 继承的语法 3.3 父类成员访问 3.3.1 子类中访问父类的成员变量 3.3.2 子类中访问父类的成员方法 4. supe…

数据挖掘(六) 层次聚类

数据挖掘(六) 层次聚类 1.层次聚类简介 层次聚类算法(Hierarchical Clustering)将数据集划分为一层一层的clusters,后面一层生成的clusters基于前面一层的结果。层次聚类算法一般分为两类: Divisive 层次聚类:又称自…

【nacos】5.1 spring cloud + Nacos 实现统一配置管理

1. 解决的问题: 配置动态更新配置集中式管理配置内容的安全性和权限不同部署环境下的配置 2. 环境: ideaspring cloudspring-cloud-alibaba nacosmavenmqtt (客户端,服务器采用的是EMQ X 5.0 ) 3. pom依赖 3.1 父级…

皮卡丘python turtle海龟绘图(电力球版)附源代码

皮卡丘python turtle海龟绘图(电力球版)附源代码 本文目录: 一、皮卡丘python turtle海龟成品效果图 二、皮卡丘背景介绍 三、皮卡丘卡角色形象 四、愿你拥有一只皮卡丘 五、Python 海龟画图主要方法 (1)海龟画图…

Allegro在PCB上制作二维码和条形码操作指导

Allegro在PCB上制作二维码和条形码操作指导 当我们需要在PCB放置一个二维码或者条形码的时候,可以不需要额外去贴标签,可以直接在PCB上制作,如下图 制作出来的二维码和条形码是可以直接用扫码程序扫描的 具体操作步骤如下 首先要用was performance allegro productivity…

python Clickhouse 分布式表介绍和创建、插入和查询数据,以及解决遇到的问题

目录 一、分布式表和本地表 原理解析: 二、Clickhouse创建分布式表结构 三、python代码实现(亲测有效) 四、解决遇到的问题 解决 DB::Exception: Missing columns: wefgrgrfew while processing query: wefgrgrfew, required columns: …

【深度学习】第三章:卷积神经网络

文章目录1. 为什么要使用卷积神经网络?2. 卷积2.1 数学上的卷积2.2 深度学习的卷积3. 卷积的构成4. 卷积的特征5. 卷积的计算(1) 一维卷积计算(2) 二维卷积计算(黑白图片)(2) 三维卷积计算(彩色图片)6. 卷积的优势7. 卷积神经网络7.1 卷积层7.2 池化层7.3 全连接层8…

浅聊一下Nginx

目录 Nginx的下载与安装 去Nginx官网安装:nginx news 直接进入下载页面进行安装 直接安装: 在服务器上使用命令对nginx的安装过程 Nginx命令 Nginx配置文件结构 Nginx配置文件(conf/nginx.conf)正题分为三个部分&#xff1…

Vue框架的学习(Vue操作指令学习三 V-bind )第三课

Vue框架的学习(Vue操作指令学习三 V-bind )第三课 语法的学习关键在于实操 案例一 V-bind基本操作 通过这个案例了解基本的操作 <div id"app"><img src"./img/1-1 (1).jpg" alt""><!--! 绑定图片利用V-bind指令 --><img v-…

一本通1073;救援(c++)

#include <iostream> #include <cmath> using namespace std; int main() {// 屋顶数目、人数int n, m;// x坐标、y坐标、实际距离、所需时间double x, y, s, sum 0;cin >> n; // 输入屋顶数目for (int i 1; i < n; i){// 输入x、y坐标和人数cin >&g…

Rockland丨艾美捷Rockland大鼠γ-球蛋白说明书

艾美捷Rockland大鼠γ-球蛋白&#xff1a; 大鼠γ-球蛋白组分由含有全抗体和其他非白蛋白血浆蛋白的血清组分组成。丙种球蛋白可用于治疗&#xff0c;以暂时提高患者的免疫力&#xff08;如免疫抑制感染后&#xff09;或增加接受肾移植的可能性。γ-球蛋白级分可作为对照试剂用…

【问题记录与解决】jupyter notebook 无法重命名,无法运行测试代码 || jupyter notebook 中常用的两个快捷键。

可以回顾下之前遇到的小问题&#xff0c;因为这次的问题解决就有赖于之前记录的内容喔&#xff01; 一、问题记录与解决】启动Jupyter&#xff0c;运行代码时报错【Error】 || 通过 Jupyter 建立的Python文件在哪儿 || Jupyter 中 移动 Python 文件 到 指定文件夹 二、【记录】…

nosql期末

文章目录第一章 绪论选择判断题简答题1. NoSQL和关系型数据库在设计目标上有何主要区别&#xff1f;2. 简要总结一下NoSQL数据库的技术特点。第二章 NoSQL数据库的基本原理选择判断简答题1. 描述分布式数据管理的特点。2 什么是CAP原理&#xff1f;CAP原理是否适用于单机环境&a…

数据结构之顺序表

目录一、什么是顺序表二、顺序表的分类1、静态顺序表2、动态顺序表(重要)三、C语言实现顺序表1、顺序表的基本结构&#xff08;2&#xff09;、动态顺序表2、动态顺序表中常见的函数接口&#xff08;1&#xff09;、初始化&#xff08;2&#xff09;、销毁函数&#xff08;3&am…

Java:什么是Quarkus?

Quarkus是一个全栈Kubernetes原生Java框架&#xff0c;用于Java虚拟机(JVM)和原生编译&#xff0c;专门针对容器优化Java&#xff0c;使其成为无服务器、云和Kubernete环境的有效平台。 Quarkus旨在与流行的Java标准、框架和库(如Eclipse MicroProfile和Spring)以及Apache Kafk…

基于FOC电路低次谐波抑制Simulink仿真

Foc电路如下图 当Sa导通时当Sb导通时当Sa导通时 Dc电压全被C2吃了 Lr电流向→ 当Sb导通时 Dc电压全被C1吃了 Lr电流向← 假设C1C2C&#xff0c;开关频率接近无穷、占空比为50%时 Uc1Uc2Udc/2、Ilr0 当占空比D>50%,Uc2增大&#xff0c;Ilr→增大 当占空比D<50%,Uc1增…

【java基础系列】13- java的面向对象

面向对象 程序是为了模拟现实世界&#xff0c;解决现实问题而使用计算机语言编写的指令集合。 1、面向对象的思想&#xff08;Object Oriented Programming&#xff09; 一切客观存在的事物都是对象&#xff0c;万物皆对象。任何对象&#xff0c;一定具有自己的特征和行为 特…

【计算机网络】HTTPS协议的加密流程

文章目录HTTPS简介关于加密过程中的名词SSL中的加密操作对称加密非对称加密证书HTTPS执行流程总结HTTPS简介 HTTPS协议也是应用层的协议&#xff0c;它是在HTTP协议的基础上引入了加密层&#xff0c;称为SSL&#xff08;旧的叫法&#xff09;或TLS&#xff08;新的叫法&#x…

如何用卡片翻转动画制作一个星座运势页面

效果展示&#xff1a;前置准备&#xff1a; 图片素材 有文案素材的detail页面 配置按钮组件触发器 具体步骤&#xff1a; 添加配置按钮、图片组件 配置图片组件动画和触发器步骤分解&#xff1a; 添加配置轮播图基础组件 添加 按钮 组件 添加 图片 组件 选中 按钮 组件 在 数据…