Linux:版本控制器git和调试工具cgdb

✨✨所属专栏:Linux✨✨

✨✨作者主页:嶔某✨✨

版本控制器

为了能够更⽅便我们管理这些不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。 ⽬前最主流的版本控制器就是 Git 。Git 可以控制电脑上所有格式的⽂件,例如 doc、excel、dwg、 dgn、rvt等等。对于我们开发⼈员来说,Git 最重要的就是可以帮助我们管理软件开发项⽬中的源代码⽂件! 

git 简史

同⽣活中的许多伟⼤事物⼀样,Git 诞⽣于⼀个极富纷争⼤举创新的年代。 Linux 内核开源项⽬有着为数众多的参与者。 绝⼤多数的 Linux 内核维护⼯作都花在了提交补丁和保存归档的繁琐事务上(1991−2002年间)。 到 2002 年,整个项⽬组开始启⽤⼀个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。 到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使⽤ BitKeeper 的权⼒。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使⽤ BitKeeper 时的经验教训,开发出⾃⼰的版本系统。 他们对新的系统制订了若⼲⽬标:

  • 速度
  • 简单的设计
  • 对⾮线性开发模式的强⼒⽀持(允许成千上万个并⾏开发的分⽀)
  • 完全分布式
  • 有能⼒⾼效管理类似 Linux 内核⼀样的超⼤规模项⽬(速度和数据量)

⾃诞⽣于 2005 年以来,Git ⽇臻成熟完善,在⾼度易⽤的同时,仍然保留着初期设定的⽬标。 它的速度⻜快,极其适合管理⼤项⽬,有着令⼈难以置信的⾮线性分⽀管理系统。 

 git的简单使用

克隆仓库 

下载好git后。我们进入gitee或者github,新建一个仓库

将新建仓库的路径复制下来

在本地打开cmd窗口输入

git clone https://github.com/QinMou000/Code.git

你的当前目录下就会新建一个新文件了

其实在你新建仓库的时候,在云端为你新建了一个文件夹,这个新文件就是从云端的仓库克隆下来的。

 上传文件

 在里面新建一个.c文件

 在当前页面打开cmd窗口输入

git add test.c // 你要上传的文件
git commit -m "这是一个测试" // 这次上传你做了什么工作
git push // 将代码上传到云端

如果一切正常,再次打开github就会在你的仓库里看到你刚刚上传的文件了 

在我们本地仓库有一个隐形文件 .git 这个文件里面管理和记录了你本地仓库的所有提交,命令commit就是把你本地的更改记录到 .git 里面。push指令就是将本地的更改同步到云端。

那如果有两个人A B在管理这个仓库,今天上传了一个文件,B不知道A上传了,B也准备上传文件,但是此时B的本地仓库和云端仓库不一样,一个陌生的文件出现在了云端(A上传的)并且这个文件在B的本地没有任何记录,此时B就会上传失败。此时B的解决方法就是将本地与云端同步一次,也就是git pull指令。但这并不会删除B原来准备上传的文件,相当于把A上传的文件和上传记录拷了下来。这时B在git push 就没有任何问题了

调试器 - gdb/cgdb使⽤

程序的发布⽅式有两种, debug 模式和 release 模式, Linux gcc/g++ 出来的⼆进制程序,默认是 release模式。

要使⽤gdb调试,必须在源代码⽣成⼆进制程序的时候, 加上 -g 选项,如果没有添加,程序⽆法被 编译

gcc test -o test.c -g

常见指令

命令作用样例
list/l显示源代码+数字表示行数list/l 10
list/l 函数名列出指定函数代码list/l main
list/l 文件名:行号列出指定文件的源代码list/l test.c:2
r/run从程序开始连续执行run
n/next单步执行,不进入函数内部next
s/step单步执行,进入函数内部

step

break/b 文件名:行号在指定行号设置断点

break test.c:10

b 10

break/b 函数名在函数开头设置断点break fun
info break/b查看当前所有断点信息info b
finish执行到当前函数返回然后停止finish
print/p打印表达式的值print start+end
p变量打印指定变量的值p x
set var 变量 = 值修改变量的值set var i = 10
continue/c从当前位置开始连续执行程序continue
delete/d breakpoints删除所有断点delete breakpoints
delete/d breakpoints n

删除序号为n的断点

delete breakpoints 1

disable breakpoints禁⽤所有断点disable breakpoints
enable breakpoints启⽤所有断点enable breakpoints
info/i breakpoints查看当前设置的断点列表info breakpoints
display 变量名跟踪显示指定变量的值(每次停⽌时)display x
undisplay 编号取消对指定编号的变量的跟踪显⽰undisplay 1
until x⾏号执⾏到指定⾏号until 20
backtrace/bt查看当前执⾏栈的各级函数调⽤及参数backtrace
info/i locals查看当前栈帧的局部变量值info locals
quit退出GDB调试器quit

watch

执⾏时监视⼀个表达式(如变量)的值。如果监视的表达式在程序运⾏期间的值发⽣变化,GDB 会暂停程序的执⾏,并通知使⽤者。如果你有⼀些变量不应该修改,但是你怀疑它修改导致了问题,你可以watch它,如果变化了,就会通知你.

条件断点添加常⻅两种⽅式:

  1. 新增
  2. 给已有断点追加
  • 注意两者的语法有区别,不要写错了。
  • 新增: b ⾏号/⽂件名:⾏号/函数名 if i == 30(条件)
  • 给已有断点追加:condition 2 i==30, 其中2是已有断点编号,没有if

本期博客到这里就结束了,如果有什么错误,欢迎指出,如果对你有帮助,请点个赞,谢谢! 

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

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

相关文章

【0x001C】HCI_Write_Page_Scan_Activity详解

目录 一、命令概述 二、命令格式和参数说明 2.1. HCI_Write_Page_Scan_Activity命令格式 2.2. Page_Scan_Interval 2.3. Page_Scan_Window 三、响应事件及参数说明 3.1. HCI_Command_Complete事件 3.2. Status 3.3. 示例 四、命令执行流程 4.1. 命令发起阶段(主机端…

云原生之运维监控实践-使用Prometheus与Grafana实现对Nginx和Nacos服务的监测

背景 如果你要为应用程序构建规范或用户故事,那么务必先把应用程序每个组件的监控指标考虑进来,千万不要等到项目结束或部署之前再做这件事情。——《Prometheus监控实战》 去年写了一篇在Docker环境下部署若依微服务ruoyi-cloud项目的文章,当…

突破工业管理新高度:AI多模态引擎赋能设备维护管理

结合AI技术,可以帮助企业提升设备维护效率和管理复杂信息的能力。以下是一个详细流程和思路: 1. 项目背景概述 在高端制造业领域,如飞机、轮船、光刻机等设备的操作手册及零件图纸涉及大量的零配件信息和操作维护流程。传统方式难以高效管理…

C++重写和重定义和重载

重写 概念: 重写发生在类的继承体系中,是指在派生类中重新定义基类中已声明为虚函数(使用 virtual 关键字修饰)的函数。其目的是让派生类根据自身的需求对基类的虚函数提供不同的具体实现,从而实现运行时多态。 规则及…

centos7在使用yum源安装依赖时报错

1.在centos7中使用yum命令时候报错如下类似信息: Loading mirror speeds from cached hostfile Could not retrieve mirrorlist http://mirrorlist.centos.org/?release7&archx86_64&repoos&infrastock error was 14: curl#6 - "Could not resol…

小版本大不同 | Navicat 17 新增 TiDB 功能

近日,Navicat 17 迎来了小版本更新。此次版本新增了对 PingCap 公司的 TiDB 开源分布式关系型数据库的支持,进一步拓展了 Navicat 的兼容边界。即日起,Navicat 17 所有用户可免费升级至最新版本,通过 Navicat 工具实现 TiDB 数据库…

python 编程 在 Matplotlib 中 默认预定的所有颜色,可以使用多种方法来指定颜色,包括预定义的颜色名称、十六进制颜色代码、

在 Matplotlib 中,可以使用多种方法来指定颜色,包括预定义的颜色名称、十六进制颜色代码、RGB 元组等。如果你想要一个比较深的颜色,你可以选择一些预定义的深色名称,或者使用较低的亮度值来定义自己的颜色。 以下是一些预定义的…

【基于Java Springboot敬老院管理系统

一、作品包含 源码数据库设计文档万字全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 数据库…

JRebel插件,全教程

JRebel是一套JavaEE开发工具。相信大家都用过,但是频繁的需要激活,已经让java开发者烦不胜烦。 本篇文章来给大家解决这个烦恼。当然没有用过的同行,我也跟大家介绍一下: 简单来说,Jrebel 可快速实现热部署,在本地开发…

PPPoE技术详解

一 , 背景 随着运营商对宽带接入技术要求的不断提高,以xDSL,CableModem和以太网为主的几种宽带接入技术在用户管理和计费等方面的不足开始显露,已无法满足运营商的需求。 在众多的技术中,以太网接入方式经济实惠&…

[JAVA]MyBatis环境配置介绍

什么是MyBatis环境配置? MyBatis是基于JDBC对数据库进行操作,在我们进行数据操作时,我们需要告诉MyBatis我们连接哪个数据库,ip地址,数据库名称,用户名密码等。以此来进行环境配置。 首先,MyB…

Javascirpt时区——脱坑指南

最近业务反馈了一个约课功能的问题,澳大利亚的用户反馈,无法进行选课。排查之后发现是时区不对引起的,由于时区的偏差已经超过时间,导致无法选课。 这里对js中处理时区的问题做一些总结。 时区 时区(Time Zone&#xf…

不用来回切换,一个界面管理多个微信

你是不是也有多个微信号需要管理? 是不是也觉得频繁切换账号很麻烦? 是不是也想提升多账号管理的效率? 在工作中,好的辅助工具,能让我们的效率加倍增长! 今天, 就给大家分享一个多微管理工具…

每日OJ题_牛客_AB32【模板】哈夫曼编码_C++_Java

目录 牛客_AB32【模板】哈夫曼编码 题目解析 C代码 Java代码 牛客_AB32【模板】哈夫曼编码 【模板】哈夫曼编码_牛客题霸_牛客网 描述: 给出一个有n种字符组成的字符串,其中第ii种字符出现的次数为ai​。请你对该字符串应用哈夫曼编码,…

UDP协议

​ UDP协议 前置知识一、应用层的进程为什么要bind端口号二、如何确定网络中的一个进程三、进程 服务 协议 端口之间的关系四、常见的协议对应的端口五、一些命令六、一个进程能不能绑定多个端口号,一个端口号能不能被多个进程绑定七、对任何一个协议报文的认识 UD…

KkFileView4.1.0部署文档--linux

先看下官方文档:kkFileView - 在线文件预览 环境要求中的JDK8如果没有的,需先安装JDK8,这里不做展示。 第二个office相关环境要求在linux中会自动下载安装,不用管。 1、下载地址 Linux 或 MacOS 版: https://kkfil…

[论文笔记]An LLM Compiler for Parallel Function Calling

引言 今天带来一篇优化函数调用的论文笔记——An LLM Compiler for Parallel Function Calling。 为了简单,下文中以翻译的口吻记录,比如替换"作者"为"我们"。 当前的函数(工具)调用方法通常需要对每个函数进行顺序推理和操作&…

基于JAVA的资源检索系统(源码+定制+开发)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…

展望:多模态融合与marker推断

技术进步使得利用高维、高通量、多尺度的生物医学数据从多个角度研究患者和疾病成为可能。在肿瘤学中,正在生成大量数据,从分子、组织病理学到临床记录。深度学习的引入极大地促进了生物医学数据的分析。然而,大多数方法都侧重于单一模态&…

AI在电商平台中的创新应用:提升销售效率与用户体验的数字化转型

1. 引言 AI技术在电商平台的应用已不仅仅停留在基础的数据分析和自动化推荐上。随着人工智能的迅速发展,越来越多的电商平台开始将AI技术深度融合到用户体验、定价策略、供应链优化、客户服务等核心业务中,从而显著提升运营效率和用户满意度。在这篇文章…