当前位置: 首页 > news >正文

Linux:gdb的简单使用

在这里插入图片描述

个人主页 : 个人主页
个人专栏 : 《数据结构》 《C语言》《C++》《Linux》

文章目录

  • 前言
  • 一、前置理解
  • 二、使用
  • 总结


前言

gdb是Linux中的调试代码的工具


一、前置理解

我们都知道要调试一份代码,这份代码的发布模式必须是debug。那你知道在linux中,我们编译代码默认是什么模式吗?答案是release模式。
在这里插入图片描述
对test.c文件默认生成的a.out可执行程序调试就知道了。
在这里插入图片描述
按q退出调试界面。

那如何更进一步的证明?
我们要先知道一些小知识。

  • 在debug发布时,一定要给可执行程序内部添加debug信息。(debug形成的可执行程序 > release形成的可执行程序)
  • Linux中形成的可执行程序格式:ELF格式
  • 要使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项
    在这里插入图片描述
    mybin-g文件大小大于mybin-r文件大小

在这里插入图片描述
使用readelf -a 可执行程序 | grep -i debug指令,可以看出mybin-g文件中有debug信息,而mybin-r文件没有
在这里插入图片描述
在这里插入图片描述
mybin-g文件进入调试界面没有(no debugging symbols found)信息显示。

二、使用

  • list / l :显示可执行程序的源码,接着上次的位置往下列,以gdb的格式显示,每次列出10行。
    在这里插入图片描述
    l num(行号):从num行开始显示源代码
    在这里插入图片描述
    l 函数名:列出某个函数的源代码
    在这里插入图片描述

  • break | b 行号:在某一行设置断点
    在这里插入图片描述
    b 函数名:在某个函数开头设置断点
    在这里插入图片描述

  • info break | info b 查看断点信息
    在这里插入图片描述

  • delete breakpoints | d breakpoints:删除所有断点
    在这里插入图片描述
    delete breakpoints n(断点编号) | d n(断点编号):删除序号为n的断点
    在这里插入图片描述
    (注意:断点编号是累计的,退出gdb清空所有断点)
    disable n(断点编号):禁用断点
    在这里插入图片描述
    enable n:启用断点
    在这里插入图片描述


  • run | r:运行程序(类似于VS的F5),遇到断点停止
    在这里插入图片描述
    没有断点在这里插入图片描述
    有断点

  • next | n:单条执行(类似VS的f10)
    在这里插入图片描述

  • step | s:进入函数调用(类似VS的f11)
    在这里插入图片描述

  • finish:执行到当前函数返回,然后停下来等待命令
    在这里插入图片描述

  • until X行号:跳至X行
    在这里插入图片描述

  • p 变量名:打印变量值
    在这里插入图片描述
    set var 变量名 = val:修改变量的值为val
    在这里插入图片描述
    display 变量名:跟踪查看一个变量,每次停下来都显示它的值
    在这里插入图片描述
    undisplay 变量名:取消对先前设置的那些变量的跟踪
    在这里插入图片描述
    breaktrace | bt:查看各级函数调用及参数
    在这里插入图片描述
    info (i)locals:查看当前栈帧局部变量的值
    在这里插入图片描述
    continue | c:从当前位置开始连续而非单步指向程序(从当前断点到下一个断点)
    在这里插入图片描述


总结

以上就是我对于Linux中gdb使用的总结。感谢支持!!!
在这里插入图片描述

相关文章:

Linux:gdb的简单使用

个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》 文章目录 前言一、前置理解二、使用总结 前言 gdb是Linux中的调试代码的工具 一、前置理解 我们都知道要调试一份代码,这份代码的发布模式必须是debug。那你知道在li…...

NestJS的微服务实现

1.1 基本概念 微服务基本概念:微服务就是将一个项目拆分成多个服务。举个简单的例子:将网站的登录功能可以拆分出来做成一个服务。 微服务分为提供者和消费者,如上“登录服务”就是一个服务提供者,“网站服务器”就是一个服务消…...

Debian 终端Shell命令行长路径改为短路径

需要修改bashrc ~/.bashrc先备份一份 cp .bashrc bashrc.backup编辑bashrc vim ~/.bashrc可以看到bashrc内容为 # ~/.bashrc: executed by bash(1) for non-login shells. # see /usr/share/doc/bash/examples/startup-files (in the package bash-doc) # for examples# If…...

Ansible变量是什么?如何实现任务的循环?

Ansible 利用变量存储整个 Ansible 项目文件中可重复使用的值,从而可以简化项目的创建和维护,并减少错误的发生率。在定义Ansible变量时,通常有如下三种范围的变量: global范围:从命令行或Ansible配置中设置的变量&am…...

随机梯度下降的代码实现

在单变量线性回归的机器学习代码中,我们讨论了批量梯度下降代码的实现,本篇将进行随机梯度下降的代码实现,整体和批量梯度下降代码类似,仅梯度下降部分不同: import numpy as np import pandas as pd import matplotl…...

渐进推导中常用的一些结论

标题很帅 STAR-RIS Enhanced Joint Physical Layer Security and Covert Communications for Multi-antenna mmWave Systems文章末尾的一个推导。 lim ⁡ M → ∞ ∥ Φ ( w k ⊗ Θ r ) Ω r w H g ∗ ∥ 2 2 M lim ⁡ M → ∞ Tr ⁡ ( g T Ω r w ( w k ⊗ Θ r ) H Φ H Φ…...

网络安全等级保护V2.0测评指标

网络安全等级保护(等保V2.0)测评指标: 1、物理和环境安全 2、网络和通信安全 3、设备和计算安全 4、应用和数据安全 5、安全策略和管理制度 6、安全管理机构和人员 7、安全建设管理 8、安全运维管理 软件全文档获取:点我获取 1、物…...

java中list的addAll用法详细实例?

List 的 addAll() 方法用于将一个集合中的所有元素添加到另一个 List 中。下面是一个详细的实例,展示了 addAll() 方法的使用: java Copy code import java.util.ArrayList; import java.util.List; public class AddAllExample { public static v…...

关于学习计算机的心得与体会

也是隔了一周没有发文了,最近一直在准备期末考试,后来想了很久,学了这么久的计算机,这当中有些收获和失去想和各位正在和我一样在学习计算机的路上的老铁分享一下,希望可以作为你们碰到困难时的良药。先叠个甲&#xf…...

LLM之RAG理论(一)| CoN:腾讯提出笔记链(CHAIN-OF-NOTE)来提高检索增强模型(RAG)的透明度

论文地址:https://arxiv.org/pdf/2311.09210.pdf 检索增强语言模型(RALM)已成为自然语言处理中一种强大的新范式。通过将大型预训练语言模型与外部知识检索相结合,RALM可以减少事实错误和幻觉,同时注入最新知识。然而&…...

Android studio:打开应用程序闪退的问题2.0

目录 找到问题分析问题解决办法 找到问题 老生常谈,可能这东西真的很常见吧,在之前那篇文章中 linkhttp://t.csdnimg.cn/UJQNb 已经谈到了关于打开Androidstuidio开发的软件后明明没有报错却无法运行(具体表现为应用程序闪退的问题&#xff…...

Spring IoC如何存取Bean对象

小王学习录 IoC(Inversion of Control)1. 什么是IoC2. 什么是Spring IoC3. 什么是DI4. Spring IoC的作用 存储Bean对象1. 创建Bean2. 将Bean注册到Spring中. 取Bean对象.1. 获取Spring上下文信息使用ApplicationContext和BeanFactory的区别 2. 获取指定Bean对象 IoC(Inversion …...

【开源】基于Vue.js的实验室耗材管理系统

文末获取源码,项目编号: S 081 。 \color{red}{文末获取源码,项目编号:S081。} 文末获取源码,项目编号:S081。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗…...

Datawhale聪明办法学Python(task2Getting Started)

一、课程基本结构 课程开源地址:课程简介 - 聪明办法学 Python 第二版 章节结构: Chapter 0 安装 InstallationChapter 1 启航 Getting StartedChapter 2 数据类型和操作 Data Types and OperatorsChapter 3 变量与函数 Variables and FunctionsChapte…...

量化交易怎么操作?量化软件怎么选择比较好?(散户福利,建议收藏)

一:量化的具体操作步骤是什么呢?1. 数据获取:索取和收集金融市场数据。 2. 策略制定:制定数量交易策略,这包括制定投资目标、建立交易规则和风险控制机制等,这个过程需要不断优化和更新。 3. 编写算法&am…...

什么是 AWS IAM?如何使用 IAM 数据库身份验证连接到 Amazon RDS(上)

驾驭云服务的安全环境可能很复杂,但 AWS IAM 为安全访问管理提供了强大的框架。在本文中,我们将探讨什么是 AWS Identity and Access Management (IAM) 以及它如何增强安全性。我们还将提供有关使用 IAM 连接到 Amazon Relational Database Service (RDS…...

Python从入门到精通七:Python函数进阶

函数多返回值 学习目标: 知道函数如何返回多个返回值 问: 如果一个函数如些两个return (如下所示),程序如何执行? 答:只执行了第一个return,原因是因为return可以退出当前函数,导致return下方的代码不执…...

uniapp踩坑之项目:使用过滤器将时间格式化为特定格式

利用filters过滤器对数据直接进行格式化&#xff0c;注意&#xff1a;与method、onLoad、data同层级 <template><div><!-- orderInfo.time的数据为&#xff1a;2023-12-12 12:10:23 --><p>{{ orderInfo.time | formatDate }}</p> <!-- 2023-1…...

webpack学习-2.管理资源

webpack学习-2.管理资源 1.这章要干嘛2.加载css注意顺序&#xff01; 3.总结 1.这章要干嘛 管理资源&#xff0c;什么意思呢&#xff1f;管理什么资源&#xff1f;项目中经常会 导入各种各样的css文件&#xff0c;图片文件&#xff0c;字体文件&#xff0c;数据文件等等&#…...

658. 找到 K 个最接近的元素

658. 找到 K 个最接近的元素 Java代码&#xff1a;滑窗 class Solution {public List<Integer> findClosestElements(int[] arr, int k, int x) {List<Integer> list new ArrayList<>();for (int i 0; i < arr.length; i) {arr[i] arr[i] - x;}for(i…...

嵌入式系统分层架构设计与驱动框架实现

1. 嵌入式系统中的分层架构设计在嵌入式开发领域&#xff0c;我一直坚持一个核心原则&#xff1a;好的代码结构应该像洋葱一样层次分明。以STM32开发为例&#xff0c;很多初学者直接从官方例程入手时&#xff0c;往往会发现应用层代码中混杂着大量硬件相关的头文件引用&#xf…...

[具身智能-221]:OpenCV以及在具身智能中的应用

OpenCV&#xff08;开源计算机视觉库&#xff09;在具身智能&#xff08;Embodied AI&#xff09;中扮演着“视觉皮层”和“基础感知工具包”的角色。虽然现代具身智能的核心决策往往依赖于深度学习框架&#xff08;如PyTorch、TensorFlow&#xff09;和大型模型&#xff0c;但…...

数据分析师课程

数据分析是什么定义&#xff1a;运用统计分析方法对收集的数据进行汇总、理解和消化&#xff0c;最大化开发数据功能数据形式&#xff1a;观测值通过实验/测量获得&#xff0c;常以图表或表格呈现分类体系&#xff1a;描述性分析&#xff08;初级&#xff09;&#xff1a;占日常…...

如何利用Clef Handbook进行有效会议管理:5个关键原则 [特殊字符]

如何利用Clef Handbook进行有效会议管理&#xff1a;5个关键原则 &#x1f680; 【免费下载链接】handbook An employee handbook built for inclusion 项目地址: https://gitcode.com/gh_mirrors/handbook6/handbook 在当今快节奏的工作环境中&#xff0c;高效会议管理…...

学习记录:从零开始学AI(二)——Scikit-learn加州房价机器学习例子学习笔记:继续补全代码运行成功

后记&#xff1a;之前一直以为用的是TensorFlow&#xff0c;原来我用的是 Scikit-learn。两者都可以实现机器学习。前者更适合实现深度神经网络。更正题目。已经搭建好环境&#xff0c;开始学习加州房价机器学习例子&#xff0c;目标理解相关概念&#xff0c;掌握机器学习例子开…...

实战应用:基于快马平台构建带交互功能的可部署qclaw官网

今天想和大家分享一个实战项目&#xff1a;用纯前端技术快速搭建一个具备基础交互功能的腾讯qclaw官网。这个项目不仅实现了静态页面展示&#xff0c;还包含了几个实用的交互功能&#xff0c;非常适合想练习前端开发的朋友。 项目背景与需求分析 官网作为产品门面&#xff0c;需…...

MogFace人脸检测模型-WebUI多场景:儿童早教APP中注意力区域动态追踪

MogFace人脸检测模型在儿童早教APP中的实战应用&#xff1a;注意力区域动态追踪 1. 引言&#xff1a;从“看见”到“理解”&#xff0c;AI如何守护孩子的专注力&#xff1f; 想象这样一个场景&#xff1a;在儿童早教APP的互动学习环节&#xff0c;一个5岁的孩子正跟着屏幕上的…...

Lux编译器完整指南:如何将用户意图智能转化为可视化规范

Lux编译器完整指南&#xff1a;如何将用户意图智能转化为可视化规范 【免费下载链接】lux Automatically visualize your pandas dataframe via a single print! &#x1f4ca; &#x1f4a1; 项目地址: https://gitcode.com/gh_mirrors/lux/lux Lux编译器是Lux数据可视…...

OpenClaw+Qwen3.5-9B长文本处理:128K上下文资料归档实践

OpenClawQwen3.5-9B长文本处理&#xff1a;128K上下文资料归档实践 1. 为什么需要自动化资料归档 作为一名经常需要阅读大量文献的研究人员&#xff0c;我长期被两个问题困扰&#xff1a;一是PDF里的关键信息难以快速提取&#xff0c;二是不同来源的资料无法自动归类。直到发…...

从架构视角理解OBS虚拟摄像头:技术设计与实践路径

从架构视角理解OBS虚拟摄像头&#xff1a;技术设计与实践路径 【免费下载链接】obs-virtual-cam obs-studio plugin to simulate a directshow webcam 项目地址: https://gitcode.com/gh_mirrors/ob/obs-virtual-cam OBS VirtualCam是一个基于DirectShow技术框架的OBS S…...