Linux系统编程学习 NO.9——git、gdb
前言
本篇文章简单介绍了Linux操作系统中两个实用的开发工具git版本控制器和gdb调试器。
git
什么是git?
git是一款开源的分布式版本控制软件。它不仅具有网络功能,还是服务端与客户端一体的软件。它可以高效的处理程序项目中的版本管理。它是Linux内核的设计者Linus Torvalds为了帮助管理Linux内核开发和维护而开发的一个开放源码的版本控制软件。
如何使用git
这里我们推荐使用国内基于git,为用户提供远端代码仓库服务的网站gitee。然后手把手教你管理自己对应的本地仓库以及远端仓库。
第一步,你得注册并登录你的gitee网站的账户,在你的网页右上角有一个“+”号,点击里面的新建仓库。

第二步,创建远端仓库

第三步,将远端仓库克隆到本地仓库。首先现将远端仓库的链接拷贝下来。

然后打开本地环境
在终端bash命令行输入以下指令

git --version
如果显示出了对应的版本,则请看下一步。若显示未找到指令,则表示git还未安装。所以需要安装git。在bash命令行中输入下面指令安装git
sudo yum install -y git
当你看到本行是文字时,相信你的git也在你的本地环境已经安装,下面我们将远端仓库克隆到本地环境里,形成本地仓库。如果你是第一次安装git也会要求你提供你的身份信息,这是为了对代码进行溯源。具体提交身份信息的指令简单提供一下demo版本的。
git config --global user.email "你的email"
git config --global user.name "你的姓名"
git clone 你的远端仓库URL

第四步,提交本地仓库代码到远端仓库。需要用到三板斧进行相应的提交。
git add .
git commit -m "提交内容描述"
git push
git add .命令是将你当前的目录下的文件提交到暂存区中。git commit -m 命令是将暂存区的文件提交到本地仓库中,并要求写上你在本次提交中做了什么?git push命令是将当前本地仓库的内容同步到远端仓库中。在初学时不建议通过配置文件省略用户名密码确认。


第五步,远端仓库对于本地仓库的管理。当我们需要删除或者调整代码仓库的结构时,需要在远端仓库进行相应的调整操作后,然后在本地环境中将远端仓库的操作后内容拷贝到本地仓库中。需要用到同步远端仓库内容与本地仓库内容的指令。
git pull



可以通过下面指令查看当前日志信息
git log

可以使用下面指令查看当前git的状态
git status

gdb
什么是gdb?
gdb是一款开源的源代码调试器。用于Linux环境下,C、C++、Python等编程语言的错误调试。gdb只能在debug版本下起作用,release版本是无法调试的。因为release版本对应目标的是用户,用户可不会去调试。
gdb的使用

这里可以看到gcc环境下默认是以release版本发布程序,如果我希望我的程序是以debug版本发布呢? 这就要使用gcc的-g选项。

这里可以看到debug版本程序的容量是要略大于release版本的。因为debug程序内部携带了调试信息。下面简单介绍两个gdb指令,l和q。l表示默认显示当前程序的前10代码,可以按回车换行符继续输出代码,也可以指定对应的行号显示代码。q表示退出gdb。


下面在正式介绍调试前先给大家看一下样例的源文件的代码

在gdb中输入r表示在gdb直接跑完当前的源代码。

我相信大家如果使用vs系列类似的图形化界面调试器,对断点一定不会陌生。那么在gdb下不和定义断点,如何查看断点,如何移除断点呢?且看下面的样例。
在gdb中,b + 行号 = 将对应的行号添加为断点。

我们平时用的图形化界面的集成开发环境中,断点是在行号的左边展示出来的。而gdb并不会在代码内容中显示断点位置。它需要通过一个指令来查看当前调试器中所有的断点。
info b

在gdb中跑info b指令后,当前程序的所有断点以及它们的相关信息就都能展示给用户了。那如果我要删除断点呢?这就需要用 d + 断点编号进行断点的删除。

在调试期间退出gdb,你上一次调试的内容数据将会被清空。

s表示逐过程执行,n表示逐语句执行。

until n行,表示直接跳转到第n行。display 变量名可以输出该变量的内容。

相关文章:
Linux系统编程学习 NO.9——git、gdb
前言 本篇文章简单介绍了Linux操作系统中两个实用的开发工具git版本控制器和gdb调试器。 git 什么是git? git是一款开源的分布式版本控制软件。它不仅具有网络功能,还是服务端与客户端一体的软件。它可以高效的处理程序项目中的版本管理。它是Linux内…...
【联邦学习+区块链】TORR: A Lightweight Blockchain for Decentralized Federated Learning
文章目录 I.CONTRIBUTIONII. ASSUMPTIONS AND THREAT MODELA. AssumptionsB. Threat Model III. SYSTEM DESIGNA. Design OverviewB. Block DesignC. InitializationD. Role SelectionE. Storage ProtocolF. Aggregation ProtocolG. Proof of ReliabilityH. Blockchain Consens…...
《网络协议》08. 概念补充
title: 《网络协议》08. 概念补充 date: 2022-10-06 18:33:04 updated: 2023-11-17 10:35:52 categories: 学习记录:网络协议 excerpt: 代理、VPN、CDN、网络爬虫、无线网络、缓存、Cookie & Session、RESTful。 comments: false tags: top_image: /images/back…...
利用NVIDIA DALI读取视频帧
1. NVIDIA DALI简介 NVIDIA DALI全称是NVIDIA Data Loading Library,是一个用GPU加速的数据加载和预处理库,可用于图像、视频和语音数据的加载和处理,从而为深度学习的训练和推理加速。 NVIDIA DALI库的出发点是,深度学习应用中…...
TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
【算法每日一练]-图论(保姆级教程 篇5(LCA,最短路,分层图)) #LCA #最短路计数 #社交网络 #飞行路线 # 第二短路
今天讲最短路统计和分层图 目录 题目:LCA 思路: 题目:最短路计数 思路: 题目:社交网络 思路: 题目:飞行路线 思路: 题目:第二短路 思路: 题目&a…...
德迅云安全为您介绍关于抗D盾的一些事
抗D盾概述: 抗D盾是新一代的智能分布式云接入系统,接入节点采用多机房集群部署模式,隐藏真实服务器IP,类似于网站CDN的节点接入,但是“抗D盾”是比CDN应用范围更广的接入方式,适合任何TCP 端类应用包括&am…...
leetcode算法之位运算
目录 1.判断字符是否唯一2.丢失的数字3.两整数之和4.只出现一次的数字II5.消失的两个数字6.位1的个数7.比特位计数8.汉明距离 1.判断字符是否唯一 判断字符是否唯一 class Solution { public:bool isUnique(string astr) {//利用鸽巢原理做优化if(astr.size()>26) return…...
java常用的几个图片处理工具对Tiff文件的支持
ImageMagick 官网 https://imagemagick.org/, 支持多种格式。命令行工具很适合调试。功能很强大. 还有一款工具GraphicsMagick 是从ImageMagick的基础上研发出来的。 OpenCV 官网 https://opencv.org/ , github地址https://github.com/opencv/opencv&…...
SQL必知会(二)-SQL查询篇(11)-联结表
第12课、联结表 联结表 使用联结:之前的 SELECT 查询某些列,只是针对一张表进行检索的。(即 FROM 表名)。但是如果用户想要使用 SELECT 对存储在不同表中的某些列时,则需要使用联结表的方式来实现。 例子中有建立两个…...
多模态大一统:开启全模态LLM和通用AI时代的大门
多模态大一统:开启全模态LLM和通用AI时代的大门 1. 目前多模态实现的方法1.1 单独训练各领域模型1.2 多任务学习1.3 集成多模态模型1.4 通用多模态模型2. 多模态统一难点2.1 数据集对齐和融合2.2 大规模计算资源需求2.3 各领域特性的兼容性2.4 可解释性和泛化能力3. 全模态的好…...
Alibaba Nacos注册中心实战
为什么需要注册中心 思考:网络请求,如果服务提供者发生变动,服务调用者如何感知服务提供者的ip和端口变化? // 微服务之间通过RestTemplate调用,ip:port写死,如果ip或者port变化呢? String ur…...
京东数据采集与挖掘(京东大数据):2023年10月京东冰箱品牌销售排行榜
鲸参谋监测的京东平台10月份冰箱市场销售数据已出炉! 10月份,冰箱市场的销售额有小幅上涨。鲸参谋数据显示,在京东平台上,今年10月冰箱市场的销量为94万,销售额将近23亿,同比增长超过1%。从价格上看&#x…...
某事业单位转型二类后绩效项目成功案例纪实
——事业单位从公益一类转向二类之后,如何通过绩效考核提高人员积极性 【客户行业】事业单位 【问题类型】绩效管理 【客户背景】 某国家级博物馆是由当地ZF与自然资源局共建共管的事业单位,是一家综合性较强的博物馆,入选过全国热搜博物…...
MySQL 和 SQL Server之间的数据迁移方法
目录 MySQL导入SQL Server 使用 SQL Server Management Studio (SSMS) 导入导出向导: 使用 SQL Server Integration Services (SSIS): SQL Server 导入 MySQL 使用 SQL Server Management Studio (SSMS) 导出数据: 使用 MySQL Workbench…...
单元测试实战(五)普通类的测试
为鼓励单元测试,特分门别类示例各种组件的测试代码并进行解说,供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战(一)Controller 的测试 单元测试实战(二)Service 的测试 单元测试实战&am…...
js 迭代器iterator 和 生成器Generator 10
✌ 文章目录 一、迭代器 iterator二、使用步骤1.引入库2.读入数据 总结 一、迭代器 iterator 迭代器是帮助我们对某个数据结构进行遍历的对象 迭代器:是一个对象,帮助我们对某个数据结构进行遍历 迭代器要符合迭代器协议,必须要有一个特定的n…...
100套Axure RP大数据可视化大屏模板及通用组件库
106套Axure RP大数据可视化大屏模板包括了多种实用美观的可视化组件库及行业模板库,行业模板涵盖:金融、教育、医疗、政府、交通、制造等多个行业提供设计参考。 随着大数据的发展,可视化大屏在各行各业得到越来越广泛的应用。可视化大屏不再…...
【OpenGauss源码学习 —— 执行算子(Append算子)】
执行算子(Append算子) Append 算子ExecInitAppend 函数exec_append_initialize_next 函数ExecAppend 函数ExecEndAppend 函数ExecReScanAppend 函数 声明:本文的部分内容参考了他人的文章。在编写过程中,我们尊重他人的知识产权和…...
Java(一)(引用类型的参数在传递,方法重载,面向对象编程基础)
基本类型和引用类型的参数在传递的时候有什么不同? 基本类型的值传递:参数传输存储的数据值 引用类型的值传递:参数传输存储的地址值 传递数组名字的时候,传递的是数组的地址,change方法可以通过地址直接访问我们在堆内存中开辟的数组,然后改变数组,数组中的元素发生变化 方…...
2026年第六届FIC全国网络空间取证大赛-初赛详细版Writeup(服务器+互联网+二进制)
2026年第六届FIC全国网络空间取证大赛-初赛详细版Writeup(服务器互联网二进制) 前言:服务器:1. 该服务器主机操作系统版本为2. 该服务器根分区硬盘的uuid号为3. 该服务器中最新的docker镜像创建时间为4. 该服务器根分区快照路径为…...
百考通AI:以“需求导向+结构化生成”为核心,让调研工作更高效省心
在学术研究、市场调研、用户反馈收集等场景中,一份逻辑清晰、针对性强的问卷是获取有效数据的核心前提,却也让无数从业者倍感头疼:从明确调研目的到设计问题逻辑,从匹配目标受众到控制问卷长度,繁琐的流程常常耗费大量…...
ViGEmBus:让Windows游戏外设兼容性不再是难题
ViGEmBus:让Windows游戏外设兼容性不再是难题 【免费下载链接】ViGEmBus Windows kernel-mode driver emulating well-known USB game controllers. 项目地址: https://gitcode.com/gh_mirrors/vi/ViGEmBus 你是否曾经遇到过心爱的游戏手柄在Windows上无法被…...
【为风光储一体化系统注入精准“心跳”的隐形力量】
在“双碳”战略目标的宏伟蓝图下,构建以新能源为主体的新型电力系统已成为时代命题。风光储一体化,作为平滑新能源波动、提升电网消纳能力的关键路径,正迎来前所未有的发展机遇。在这一变革性的能源体系中,每一处精密的控制与高效…...
SpringBoot项目实战:5分钟集成EasyExcel,搞定带复杂合计与中文金额的Excel导出
SpringBoot实战:5分钟集成EasyExcel实现智能Excel导出 在企业管理系统的开发中,Excel导出几乎是每个项目都会遇到的刚需功能。传统POI操作Excel的繁琐代码让很多开发者头疼不已,而Alibaba开源的EasyExcel则彻底改变了这一局面。本文将带你用S…...
聊聊 KaiwuDB 的开源压测工具:kwdb-tsbs 上手分享
上一篇我们聊了一下通用 TSBS 工具《聊一聊TSBS:时序数据库跑分,为啥大家都用它?》 今天想就一家国内厂商开源的TSBS工具展开讲讲。怎么看这件事儿,怎么用,以及好不好用。 最近一直在玩时序数据库,做性能对…...
Linux网络编程实战:从Socket基础到高并发服务器设计
1. 项目概述:从套接字到应用,理解网络编程的基石当我们谈论Linux下的应用开发,尤其是那些需要与外界通信的程序时,“网络编程”是一个绕不开的核心技能。而“Internet Domain应用编程”这个听起来有些学术的标题,实际上…...
AI嵌入式系统测试:融合经典方法与数据驱动验证的工程实践
1. 项目概述:当嵌入式遇见AI,测试的“变”与“不变”干了十几年嵌入式,从8位单片机玩到多核异构处理器,从裸机编程干到复杂的RTOS,我原以为测试这件事,左不过就是单元测试、集成测试、系统测试那几板斧&…...
AI Agent Harness Engineering 的安全与伦理挑战:我们如何控制所创造之物?
AI Agent Harness Engineering 的安全与伦理挑战:我们如何控制所创造之物? 关键词:AI Agent 治理、Harness Engineering、对齐问题、灾难性遗忘、人类反馈强化学习、鲁棒性、责任归属 摘要:当我们把AI从“只会做一件事的工具人”升…...
Go语言实现CI/CD流水线:从GitHub Actions到Argo CD的完整指南
Go语言实现CI/CD流水线:从GitHub Actions到Argo CD的完整指南 引言 CI/CD是现代软件开发的核心实践,Go语言项目可以通过各种CI/CD工具实现自动化构建、测试和部署。本文将深入探讨Go语言项目的CI/CD流水线实现,涵盖GitHub Actions、GitLab CI…...
