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.mzph.cn/bicheng/61374.shtml

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

相关文章

Vue3 provide 和 inject的使用

在 Vue 中,provide 和 inject 是 Composition API 的一对功能,用于父子组件之间的依赖注入。它们的作用是让父组件可以向其所有子组件提供数据或方法,而不需要通过逐层传递 props。 1. provide provide 用于父组件中,提供数据或…

C++11——异常

1.异常概念 异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就会抛出异常,让函数的调用者处理这个错误 throw:当出现问题时,程序会抛出一个异常,通过 throw 来完成catch:catch 关键字捕获异…

Redis ⽀持哪⼏种数据类型?适⽤场景,底层结构

目录 Redis 数据类型 一、String(字符串) 二、Hash(哈希) 三、List(列表) 四、Set(集合) 五、ZSet(sorted set:有序集合) 六、BitMap 七、HyperLogLog 八、GEO …

AI风向标|算力与通信的完美融合,SRM6690解锁端侧AI的智能密码

当前,5G技术已经成为推动数字经济和实体经济深度融合的关键驱动力,进入5G发展的下半场,5G与AI的融合正推动诸多行业的数字化转型和创新发展,终端侧AI和端云混合式AI将广泛应用于各类消费终端和各行各业。 在推动5G和AI与各行业场…

简单工厂模式、方法工厂模式

简单工厂模式(Simple Factory Pattern) 简单工厂模式的核心思想是通过一个工厂类,根据提供的参数来决定创建哪一个具体的产品类实例。 这个模式通常用于产品种类较少,且不经常变化的场景。 interface Product {void create(); }…

torchvision库在进行图片转换操作中报antialias参数没有显式设置会导致不同图片后端中的值不统一的警告信息

诸神缄默不语-个人CSDN博文目录 这个警告信息是我在直接调用已经封装好的视觉模型时出现的,位置是: D:\anaconda3\envs\venv_path\Lib\site-packages\torchvision\transforms\functional.py:1603 警告信息全文是: UserWarning: The default…

【HOT100第四天】除自身以外数组的乘积,矩阵置零,螺旋矩阵,旋转图像

今天感觉是边界值练习专场。。。整体难度不大但是细节还是需要多动手写一写。 238. 除自身以外的数组的乘积 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意…

Angular中的ngOnchange()的汇总

ngOnChanges() 是 Angular 中的一个生命周期钩子函数,它在组件或指令的 输入属性(Input())发生变化时被调用。这个钩子可以帮助你检测输入数据的变化,并对数据变化做出反应。 1.监听的对象 ngOnChanges() 监听的是 通过 Input() …

百度智能云千帆大模型平台引领企业创新增长

本文整理自百度世界大会 2024——「智能跃迁 产业加速」论坛的同名演讲。 更多大会演讲内容,请访问: https://baiduworld.baidu.com 首先,跟大家分享一张图,这个是我们目前大模型应用落地的场景分布。可以看到,大模型…

记录java Collections.sort踩的坑

前言 java Collections.sort 排序失效?为什么会排序失效呢? 需求和问题 需求:获取指定文件夹下的所有文件,并且按照修改时间顺序从大到小排序,如果修改时间相同,则按照创建时间从大到小排序 // 输入lis…

【企业级分布式系统】ELK优化

文章目录 Elasticsearch作为日志存储时的优化优化ES索引设置优化线程池配置锁定内存,不让JVM使用Swap减少分片数、副本数 Elasticsearch作为日志存储时的优化 linux内核优化、JVM优化、ES配置优化、架构优化(filebeat/fluentd代替logstash、加入kafka做…

【Flutter 问题系列第 84 篇】如何清除指定网络图片的缓存

这是【Flutter 问题系列第 84 篇】,如果觉得有用的话,欢迎关注专栏。 博文当前所用 Flutter SDK:3.24.3、Dart SDK:3.5.3,网络图片缓存用的插件 cached_network_image: 3.4.1,缓存的网络图像的存储和检索用…

亚马逊商品详情API接口解析,Json数据示例返回

亚马逊的商品详情API接口(如Amazon Product Advertising API)允许开发者获取商品的详细信息,包括价格、描述、图片URL等。以下是一个示例的JSON数据返回结构,以及相应的解析说明。请注意,实际返回的数据结构可能会根据…

SIMCom芯讯通A7680C在线升级:FTP升级成功;http升级腾讯云对象储存的文件失败;http升级私有服务器的文件成功

从事嵌入式单片机的工作算是符合我个人兴趣爱好的,当面对一个新的芯片我即想把芯片尽快搞懂完成项目赚钱,也想着能够把自己遇到的坑和注意事项记录下来,即方便自己后面查阅也可以分享给大家,这是一种冲动,但是这个或许并不是原厂希望的,尽管这样有可能会牺牲一些时间也有哪天原…

uniapp实现中英文切换

home.js const data {ZH: {content1: "苹果",},EN: {content1: “Apple”,} } export default dataindex.js import home from "./home.js" export default {home }en.js import part1 from ./data/part1/index.js const en {language: {name: "…

Android Studio 控制台输出的中文显示乱码

1. Android Studio 控制台输出的中文显示乱码 1.1. 问题 安卓在调试阶段,需要查看app运行时的输出信息、出错提示信息。乱码,会极大的阻碍开发者前进的信心,不能及时的根据提示信息定位问题,因此我们需要查看没有乱码的打印信息。…

活着就好20241120

今天是20号,周三,亲爱的朋友们,大家早上好!在连续两天的努力之后,我们迎来了这个同样充满希望与挑战的周三早晨。让我们带着前两天的收获与经验,怀揣着新的目标和梦想,继续在这丰富多彩的一天中…

基于yolov8、yolov5的行人检测识别系统(含UI界面、训练好的模型、Python代码、数据集)

摘要:行人检测在交通管理、智能监控和公共安全中起着至关重要的作用,不仅能帮助相关部门实时监控人群动态,还为自动化监控系统提供了可靠的数据支撑。本文介绍了一款基于YOLOv8、YOLOv5等深度学习框架的行人检测模型,该模型使用了…

Java安全—log4j日志FastJson序列化JNDI注入

前言 log4j和fastjson都是这几年比较火的组件,前者是用于日志输出后者则是用于数据转换,今天我们从源码来说一下这两个组件为何会造成漏洞。 实验环境 这里的idea要进行一下配置,因为我们要引用第三方组件,而这些第三方组件都是…

【白话机器学习系列】白话 Softmax

文章目录 什么是 SoftmaxSoftmax 函数详解示例编程实现对矩阵应用 Softmax 函数 什么是 Softmax Softmax 函数,又称归一化指数函数,它使用指数函数将输入向量归一化为概率分布(每一个元素的范围都在 ( 0 , 1 ) (0,1) (0,1) 之间,…