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

Linux:入门开发工具--Git和GDB调试器

1.版本控制器Git1.1 Git的背景知识Git 是一款由 Linux 创始人 Linus Torvalds 在 2005 年开发的分布式版本控制系统。当时 Linux 内核社区因商业版本控制工具授权问题被迫更换工具急需一个高效、分布式、速度极快的管理方案Git 因此诞生它凭借强大的分支与合并能力迅速成为全球最主流的版本控制工具。所谓的版本控制工具简单说就是给代码 / 文件做 “时光机 多人协作管家”专门管理文件的修改历史和多人同时开发的问题。它最核心的作用是记录你每一次对代码的改动保存每一个版本方便你随时回看、回退、对比差异。不用你自己复制一堆文件夹命名成v1、v2、最终版、最终最终版工具会自动帮你管理所有历史。在团队开发里版本控制可以让多个人同时修改同一份代码之后自动合并各自的改动避免互相覆盖、文件冲突混乱一旦代码改坏了、出 bug 了可以立刻回滚到上一个正常版本不影响项目进度。同时它还能清晰记录谁在什么时候改了什么代码方便追溯问题和协作分工。因此 Git 的核心作用是记录代码的每一次修改实现版本回溯、多人协作和代码管理。它可以追踪文件变化保存每一个版本的快照方便在出错时回滚同时支持多人在同一项目上并行开发互不干扰最后再安全地合并代码广泛用于软件开发、文档管理等需要多人协作的场景。Git 的关键概念包括仓库、提交、分支、暂存区和远程仓库。本地仓库保存完整历史不依赖网络提交代表一次版本记录分支支持独立开发新功能暂存区用于精细选择要提交的内容远程仓库则实现团队同步这些设计让 Git 既灵活又可靠成为现代开发必备工具。目前最主流的版本控制器就是Git。Git可以控制电脑上所有格式的⽂件例如doc、excel、dwg、 dgn、rvt等等。对于我们开发人员来说Git最重要的就是可以帮助我们管理软件开发项目中的源代码文件。因为目前主流的版本控制器是 Git所以衍生出两个代码托管平台分别是国外的GitHub和国内的Gitee。GitHub 是基于 Git 的全球最大远程代码托管平台由美国公司运营主要面向全球开发者可以把本地 Git 仓库上传到云端实现开源分享、团队协作很多开源项目都托管在这里。Gitee 也就是码云同样是基于 Git 的国内代码托管平台由中国公司开发服务器在国内访问速度更快更适合国内团队协作、企业私有项目和学生学习使用。1.2 安装Git我们先判断本地是否已经装好了 git输入git --version之后出现这样的提示就代表装好了如果出现 comman not found 就代表没有安装git。那我们就需要用到这个指令yum install git1.3 常见指令git init语法git init作用在当前文件夹初始化一个 Git 仓库让这个目录可以被版本管理。git add语法git add .作用把当前所有修改、新增的文件加入暂存区准备提交。git commit语法git commit -m 本次修改说明作用将暂存区的内容正式提交到本地仓库生成一个版本记录。git push语法git push 远程仓库名 分支名常用 git push origin main作用把本地提交的代码上传到 GitHub/Gitee 等远程平台。git pull语法git pull 远程仓库名 分支名常用 git pull origin main作用从远程平台拉取最新代码到本地并自动合并。2. 调试器 GDB2.1 基本概念GDB是Linux下最常用的命令行程序调试工具主要用于调试C、C等编译型语言编写的程序。它可以让程序在指定位置暂停运行、单步执行代码、查看变量与内存值、追踪函数调用过程并快速定位程序崩溃、逻辑错误等问题是开发和排查bug的核心工具。我们会更推荐另一个CGDB它是在 GDB 基础上做的可视化增强调试工具保留了所有 GDB 功能同时在终端里分屏显示带语法高亮的源代码调试时能直观看到代码执行位置操作风格类似 Vim比纯 GDB 更方便易用。2.2 gdb使用的前置条件首先有一个直接使用gcc编译链接形成的文件 code.exe 我们使用 readelf -S code.exe 的指令来查看这个文件的信息。首先大家要知道readelf -S code.exe 这个指令的作用是用来读取文件的细节信息从图中我们可以看到代码段、数据段、字符串表、符号表等关键区块包括每个节的名称、类型、地址、偏移、大小等。最关键的是它能直接判断文件是 Debug 版还是 Release 版。Debug 版本的 ELF 文件会包含调试节最典型的是.debug_info、.debug_line、.debug_symbols等这些节用于 GDB 调试时读取源码、变量、行号信息。而 Release 版本为了精简体积、提升效率会完全移除这些调试节执行strip命令后调试信息会彻底消失。而我们在这个 code.exe 的elf文件中并没有找到调试节这就说明了gcc编译链接形成的文件默认是生成release版本的那么我们使用 gdb 指令想要去调试这个可执行程序 code.exe 的时候就没有办法进行调试因为我们必须要有调试节信息也就是必须要在Debug版本下才能进行调试。那么在编译链接的时候该如何控制文件生成 Debug 版本呢只要使用这个指令使用 gcc 的时候加一个 -g 即可。并且我们会发现 Debug 和 Release 版本的两个文件的内存大小不一样Debug版本的内存更大这是因为其文件中还存储了调试信息。使用查找指令确实能找到debug调试节信息。2.3 gdb的基本使用gdb使用前首先要先安装安装完成之后其中的 r 就代表 run 让程序先运行起来再调试。或者使用 b 指令代表breakpoint断点的意思打上断点之后再使用 r 指令就可以直接运行到断点处。不过gdb看着实在是太生硬了所以就有了cgdb的出现2.4 cgdb的基本使用使用指令 cgdb code.exe-debug 之后就会出现这样的界面它将调试界面和代码界面放到了一块提供了更好的可视化调试。我们多打几个断点大家就会发现在上面的代码界面中有红色高亮的断点提示使用 info b 这个指令还可以查看我们的断点信息。如果想要删除断点就使用 delete 序列号我们发现断点的信息当中有一个 Num 这就代表了每个断点的序列号。下面是 gdb/cgdb中的一些指令本文到此结束感谢各位读者的阅读如果有讲解的不到位或者错误的地方欢迎各位读者的批评和指正。

相关文章:

Linux:入门开发工具--Git和GDB调试器

1.版本控制器Git1.1 Git的背景知识Git 是一款由 Linux 创始人 Linus Torvalds 在 2005 年开发的分布式版本控制系统。当时 Linux 内核社区因商业版本控制工具授权问题被迫更换工具,急需一个高效、分布式、速度极快的管理方案,Git 因此诞生,它…...

大模型之Linux服务器部署大模型斜

一、各自优势和对比 这是检索出来的数据,据说是根据第三方评测与企业数据,三款产品在代码生成质量上各有侧重: 产品 语言优势 场景亮点 核心差异 百度 Comate C核心代码质量第一;Python首生成率达92.3% SQL生成准确率提升35%&…...

【Agent面试题大揭秘】50道高频题深度解析,助你拿下Offer!

一、Agent 基础与架构什么是 Agent 的“感知-规划-行动”闭环?如何实现?Agent 的长期记忆和短期记忆分别如何设计和存储?如何解决 Agent 的“幻觉”问题?Agent 的状态管理是如何实现的?如何保证多轮对话的状态一致性&a…...

Windows系统的MBR磁盘分区

对于逻辑类数据恢复技术的学习,最重要的就是对各种系统下的分区结构及文件系统结构的学习。作为目前主流的操作系统Windows,它能够支持的分区结构包括MBR磁盘分区、动态磁盘分区及GPT磁盘分区:它能够支持的文件系统结构包括FAT12、FAT16、FAT…...

数学建模算法案例精讲500篇-【自动驾驶】自动驾驶中的决策规划算法概述(代码篇第一篇:全局路径规划+行为决策)

目录 一、前言:代码篇核心定位与环境说明 1.1 运行环境说明 1.2 代码设计思路 二、A*算法代码实现(全局路径规划主流) 2.1 算法核心回顾(对应理论篇2.2节) 2.2 完整MATLAB代码实现 2.3 代码说明与调试技巧 2.3.1 代码结构对应理论 2.3.2 调试技巧(工程适配重点)…...

一文读懂 JWT 无状态身份认证的核心原理

JWT 是目前前后端分离、微服务架构中最常用的无状态身份认证方案。本文用简洁易懂的方式,带你快速掌握 JWT 的签发、传递与校验核心逻辑,轻松理解其工作原理与安全机制。 一、什么是JWT? JWT(JSON Web Token)是一种轻…...

两条根本不同的道路:私有化部署与SaaS模式的抉择

很多企业在选型内部通讯工具时,面对的第一个问题往往是:选SaaS还是选私有化?这不是一个简单的技术偏好问题,而是一个关乎企业数据战略、安全治理与长期发展的核心决策。在“云优先”的浪潮下,公有云SaaS产品凭借开箱即…...

(四大天王)Python程序设计之四大核心数据结构:字典篇

(四大天王)Python程序设计之四大核心数据结构:字典篇摘要:在Python的“四大天王”——列表、元组、字典、集合中,字典(Dict)以其键值对映射和O(1)平均查找效率的特性,成为了处理关联…...

【计算机视觉】从Pixel到Mask:逐像素分类与掩码分类的实战对比

1. 计算机视觉中的像素级任务:从基础说起 第一次接触计算机视觉项目时,我盯着屏幕上密密麻麻的像素点发了好一会儿呆。这些看似简单的彩色小方块,究竟如何变成机器理解世界的语言?后来才明白,逐像素处理正是解锁图像理…...

12届蓝桥杯省赛Java B 组Q1~Q4

题目链接: Q1 蓝桥云课:ASC Q2 蓝桥云课:卡片 Q3 蓝桥云课:直线 Q4 蓝桥云课:货物摆放 算法原理: Q1解法:作差 时间复杂度O(1) 思路很简单,只需无脑算出L和A的差值&#xff…...

准分子消光炉市场预测:2025-2031年复合年增长率(CAGR)达5.5%

在工业表面处理领域,准分子消光炉作为一种依托准分子紫外(UV)光(典型波长172nm)的专用工业系统,正凭借其低温可控、精准改性的技术特性,重塑高端材料处理市场格局。据恒州诚思(YH Re…...

每日安全情报报告 · 2026-04-08

每日安全情报报告 2026-04-08 报告时间:2026年04月08日 12:49 覆盖周期:近48小时(2026-04-06 ~ 2026-04-08) 今日特别关注:微软 Patch Tuesday 日(Kerberos RC4 强制弃用生效) FortiClient EMS…...

1.C语言常见概念

目录1.C语言是什么?2.C语言的历史3.编译器的选择-VS2022正文1.C语言是什么?人和计算机是如何交流的?是使用计算机语言。就如同人与人交流使用的自然语言。目前的计算机语言有上千种,C语言就是其中一种,除此之外还有C/J…...

自适应散热风扇市场洞察:2020-2025年CAGR为14.8%

一、产品定义与技术基础:主动式热管理的核心突破自适应散热风扇作为主动式热管理装置的核心载体,通过集成温度传感器、转速反馈模块与PWM控制接口,实现基于设备运行状态、环境温度及内部热负载的动态调节。相较于传统恒速风扇,其闭…...

浪潮云电脑CD1000线刷固件包|基于原厂固件深度优化|支持Root+ADB调试|预装当贝3.1纯净桌面与全功能影音套件

温馨提示:文末有联系方式浪潮CD1000专属优化线刷固件 本刷机包专为浪潮云电脑CD1000一体机量身打造,严格基于出厂固件进行底层精简与性能调优,稳定兼容所有硬件模块,支持一键线刷,全程无需拆机。核心功能亮点&#xff…...

FastAPI负载测试终极指南:从配置到性能优化的完整方案

FastAPI负载测试终极指南:从配置到性能优化的完整方案 【免费下载链接】fastapi FastAPI framework, high performance, easy to learn, fast to code, ready for production 项目地址: https://gitcode.com/GitHub_Trending/fa/fastapi FastAPI作为一款高性…...

scGPT环境配置实战:从零搭建A6000兼容的深度学习环境

1. 为什么选择A6000搭建scGPT环境 NVIDIA A6000作为专业级显卡,拥有48GB GDDR6显存和10752个CUDA核心,特别适合处理scGPT这类需要大显存支持的深度学习任务。我在实际项目中使用A6000跑scGPT模型时,发现它的显存优势能轻松应对单细胞转录组数…...

【LeetCode】双指针专项合集

前言 本章练习:双指针:左右碰撞指针 目的:掌握左右指针向中间移动,最终相会的解法。 在下面这几道题中:思考不同题目中指针移动逻辑有什么区别 125:验证回文串 题目要求: 判断一个字符串是否是回…...

Linux GPIO驱动开发实战:从传统接口到新式gpiod

一、顶级架构一句话总结 设备树(gpio描述) → GPIO子系统 → gpiod接口 → 硬件引脚控制 GPIO是嵌入式开发中最基础的外设接口,Linux提供了新旧两套API,新式gpiod接口更安全、更简洁。二、GPIO子系统架构 架构层次 ┌─────────────────…...

强化学习(3)--最优状态价值最优策略

说明:本系列文章是我在学习了西湖大学赵世钰老师的《Mathematical Foundations of Reinforcement Learning》一书后的学习笔记,在B站上有赵老师的完整课程视频。 课程视频链接 PDF教材链接 本文代码链接 一、最优状态价值和最优策略 定义&#xff1a…...

MySQL 运算符详解

MySQL 运算符详解 MySQL 作为一款功能强大的关系型数据库管理系统,其运算符的使用贯穿于 SQL 语句的各个部分。本文将详细介绍 MySQL 中常用的运算符,包括算术运算符、比较运算符、逻辑运算符等,旨在帮助读者全面理解并掌握 MySQL 运算符的使用。 一、算术运算符 算术运算…...

Redis 服务器:全面解析与应用实践

Redis 服务器:全面解析与应用实践 引言 Redis(Remote Dictionary Server)是一款开源的、高性能的键值存储数据库。它采用内存作为存储介质,能够提供极快的读写速度,常用于缓存、会话管理、消息队列等领域。本文将全面解析Redis服务器的原理、配置、应用场景以及实践操作…...

机械臂+强化学习

机械臂 经典机械臂控制方法 运动学 动力学 基于...

DVWA——SQL Injection学习笔记

文章目录前言一、是什么&#xff1f;二、步骤1.Low2.Medium3.High4.Impossible代码核心功能安全特性总结总结手工注入&#xff1a;前言 一、是什么&#xff1f; 二、步骤 1.Low 代码如下&#xff1a; <?phpif( isset( $_REQUEST[ Submit ] ) ) {// Get input$id $_REQU…...

2026中国大模型市场火爆!阿里字节抢人才,年薪百万Offer等你来!

最新数据显示&#xff0c;2024年中国大模型市场规模已达294.16亿元&#xff0c;其中多模态大模型贡献156.3亿元&#xff0c;数字人、游戏等场景应用增长迅猛&#xff1b;更有预测指出&#xff0c;2026年这一市场规模将突破700亿元大关。图源自36氪研究院 市场竞争梯队也逐渐清晰…...

Vibe Coding 详细介绍

什么是 Vibe Coding&#xff1f;Vibe Coding&#xff08;氛围编程&#xff09;是由 AI 专家 Andrej Karpathy 在 2024 年初提出的新编程范式——一种"用自然语言编程"的开发方式。你描述"想要什么"&#xff0c;AI 来写代码。核心理念&#xff1a;"You…...

子系统是啥?---总线架构的实例化

目录 一、新手容易踩的认知坑 二、历史演变&#xff1a;从硬编码到子系统设备树的转变 &#xff08;1&#xff09;原始裸奔时代&#xff1a;无结构体、无设备树、无总线架构 &#xff08;2&#xff09;结构体封装时代&#xff1a;有结构体、无设备树、有总线架构 &…...

【Kali Linux】 2026.1 新功能详解

2026年3月24日发布&#xff0c;基于 2025.4 的更新&#xff0c;带来全新视觉体验和多项新工具&#xff01;&#x1f3a8; 2026 年度主题更新每年惯例的主题大换血&#xff0c;覆盖全流程&#xff1a;组件更新内容引导动画修复了实时镜像卡在第一帧的问题&#xff0c;循环更流畅…...

Java RAG入门基础教程(非常详细),用LangChain4j构建问答系统看这篇就够了!

1. 引言&#xff1a;为什么需要 RAG 1.1 大模型的局限性 在使用大语言模型&#xff08;LLM&#xff09;时&#xff0c;我们常常遇到以下问题&#xff1a; ❌ 问题 1&#xff1a;模型不知道企业内部信息用户&#xff1a;我们公司的年假政策是什么&#xff1f;AI&#xff1a;抱…...

C语言学习的第一周

1.自我介绍我姓马&#xff0c;来自成都的一个双非一本&#xff0c;目前大一&#xff0c;神秘专业&#xff0c;目前学c语言是兴趣使然和为了未来转码作铺垫&#xff0c;多项技能傍身也没错嘛2.学习目标打下c语言的坚实基础&#xff0c;方向初步是逐步从c语言到c再到更深度的知识…...