Linux初识:【版本控制器Git】【调试器gdb/cgdb使用】

news/2025/1/23 2:59:14/

目录

一.版本控制器Git

1.1版本控制器

1.2Git的操作

1.2.1从远端仓库到本地

1.2.2工作区到本地暂存区

1.2.3本地暂存区到本地仓库

 1.2.4本地仓库到远程仓库

gitignore-toc" name="tableOfContents" style="margin-left:80px">1.2.5 .gitignore

git%EF%BC%89-toc" name="tableOfContents" style="margin-left:80px"> 1.2.6Windows上操作(需要安装Tortoisegit

 1.2.7同步远端和当地

二调试器-gdb/cgdb使用

2.1 -g选项

2.2先简单认识gdb

l+数字

b+数字和r

 c

2.3 安装cgdb

2.4cgdb命令

 b+文件名+:+数字

info+b

 d+断点编号

n

s

bt

 finish

p+变量:

disable和enble +断点编号

 until

 display+变量和undisplay+编号

info locals

​编辑

2.5调试技巧

watch

 set var

条件断点

添加条件断点

​编辑 

 给存在的断点添加条件


一.版本控制器Git

1.1版本控制器

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

git是一个底层的版本控制器软件。gitee或github是基于git的网站或平台。

1.2Git的操作

1.2.1从远端仓库到本地

我先在gitee创建一个远程仓库:

新创建好的仓库会有下面的这些东西:

git既能服务客户端也可以服务远端,所以我们的远程仓库也可以拉取到本地。

 然后再命令行输入:

git clone+(仓库链接)

 

进入仓库跟我们在远程仓库看到的东西的一样的:

 

 


这里面有隐藏文件.git这个其实就是本地仓库。它会记录我们所有的修改记录,git在提交的时候只会记录变化的部分。 

举个例子,我创建一个test.c: 

 

本地仓库是没有记录下来的,因为.git没有记录,而我们当前的目录只是一个工作区:

 那要怎么添加?

1.2.2工作区到本地暂存区

git add+文件名:

虽然但是这样不是真正的添加到本地仓库,而是到一个暂存区的地方:

 

git status可以查看有哪两个新文件: 

 

1.2.3本地暂存区到本地仓库

 git commit -m +"文件描述"

这个的作用就是移动到本地仓库: 

git log :

查看日志提交记录: 

 

 1.2.4本地仓库到远程仓库

git push 

提交到远端仓库:

下面还要输入用户名和密码

 这样的就成功了:

到我们的gitee看一下: 

 

gitignore" name="1.2.5%20.gitignore" style="background-color:transparent">1.2.5 .gitignore

vim查看文件里的内容(保存的是需要忽略特定后缀的文件):

上传文件的时候可以帮我们过滤掉里面后缀的文件:

git%EF%BC%89" name="%C2%A01.2.6Windows%E4%B8%8A%E6%93%8D%E4%BD%9C%EF%BC%88%E9%9C%80%E8%A6%81%E5%AE%89%E8%A3%85Tortoisegit%EF%BC%89" style="background-color:transparent"> 1.2.6Windows上操作(需要安装Tortoisegit

先新建一个文件: 

记得先复制远程仓库的链接。

打开文件,右键选择gitclone:
 

 它会自动帮我们填好远端仓库的链接,直接点击OK。


上面是从远端到本地的过程。

我修改一个文件的内容:

 

现在要从本地到远端:

在Windows点击commit就行了,因为它会自动的帮我们把add个commit一起做了:

然后点击push: 

 

完成: 

 1.2.7同步远端和当地

当我们在上面用Windows机器对文件进行了修改更新了远端仓库的内容,那我的Linux机器并不知道远端更新了,这时如果我去更新远端仓库的话就会出现冲突

 

git pull: 

把远端仓库的内容做一次更新,之后再进行push:

这里就成功了。 

 同理,Windows的push报错也是相同的道理。

二调试器-gdb/cgdb使用

2.1 -g选项

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

Linux下我们编译好的代码无法直接调试

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

make:

如果不加-g选项的话,我们形成的可执行程序要比加了的小,因为默认没有debug文件: 

 

2.2先简单认识gdb

gdb +文件名:

开始调试 

l+数字

从哪个位置开始查看代码,可以回车查看下一页

b+数字和r

打断点 和运行:

 c

运行到下一个断点处

这终归还是很麻烦,不好直观的看到代码运行

2.3 安装cgdb

安装cgdb:

 • 上面的基本调试还是麻烦,虽然是黑屏,但是还是想看到代码调试

• 推荐安装cgdb: • Ubuntu:sudo apt-get  install  -y  cgdb  

• Centos: sudo  yum  install  -y  cgdb

2.4cgdb命令

 b+文件名+:+数字

打断点

14的数字会变红: 

 

info+b

查看断点 

Num列表示断点编号

 d+断点编号

删除断点,注意d不能跟行号

n

逐过程 

在17行打一个断点,按r到这一行会停下来,再按n会到下一行。

s

逐语句 

跟上面一样的断点这里会进入函数的内部:

bt

查看栈桢 :

系统每调用一次函数都会创建一个该函数的栈桢。

 finish

结束当前函数的运行:

直接跳到原来进入函数的地方: 

 

p+变量:

 查看临时变量的值:

 

disable和enble +断点编号

断点可以被使能

 

1号断点的Enb变成了n,此时的断点不可以被使用,但是存在。 

 

 until

某一个函数内部直接跳转到某一行:

 display+变量和undisplay+编号

 p只能显示当下的变量值,想让变量值长显示:

注意undisplay加编号 

info locals

查看函数中所有变量的值:

 

 

 

2.5调试技巧

watch

监视某个变量是否变化:

使用info b可以查看我们刚才监视的变量的编号,这里是2。1是断点,取消监视的做法跟删除断点的做法一样,d+编号。

时刻可以看到变化 (注意只有监视的值被修改了才会通知我们)

 

 set var

可以直接在函数内部改变某个变量的值,来演示结果被修改之后的值是不是正确的。

上面可以看到我把result的值更改为了9999,到达函数外部n的值也变成了9999 。 

条件断点

添加条件断点

只有当i==10时,才会停下来: 

 

进入Sum函数后,按c跳到下个断点

查看i 的值,就是在i等于10时停下的: 

 

 给存在的断点添加条件

condition+断点编号+条件

本来有两个普通断点,后面我把第二个断点添加了额外条件:i==20时才停下:

 cgdb分屏操作ESC进入代码屏,i回到gdb屏


http://www.ppmy.cn/news/1565368.html

相关文章

python爬虫入门(理论)

python爬虫 学习网站 一、准备 环境搭建 requests beautifulsoup4 selenium 爬虫架构 URL管理器:管理URL,存储已爬取或待爬取的URL 网页下载器:破解网页,进行下载 网页解析器:对网页的HTML样式、连接的URL等进…

CSS 合法颜色值

CSS 颜色 CSS 中的颜色可以通过以下方法指定: 十六进制颜色带透明度的十六进制颜色RGB 颜色RGBA 颜色HSL 颜色HSLA 颜色预定义/跨浏览器的颜色名称使用 currentcolor 关键字 十六进制颜色 用 #RRGGBB 规定十六进制颜色,其中 RR(红色&…

计算机网络 (53)互联网使用的安全协议

一、SSL/TLS协议 概述: SSL(Secure Sockets Layer)安全套接层和TLS(Transport Layer Security)传输层安全协议是工作在OSI模型应用层的安全协议。SSL由Netscape于1994年开发,广泛应用于基于万维网的各种网络…

【湖南省乡镇界】面图层shp格式arcgis数据乡镇名称和编码2020年wgs84坐标内容测评

标题中的“湖南省乡镇界面图层shp格式arcgis数据乡镇名称和编码2020年wgs84坐标无偏移.zip”表明这是一份地理信息系统(GIS)数据,具体为湖南省内各乡镇的边界图层。这些数据是用于描述湖南省各乡镇行政区域的界限,并且是以ESRI公司…

大模型GUI系列论文阅读 DAY2续:《一个具备规划、长上下文理解和程序合成能力的真实世界Web代理》

摘要 预训练的大语言模型(LLMs)近年来在自主网页自动化方面实现了更好的泛化能力和样本效率。然而,在真实世界的网站上,其性能仍然受到以下问题的影响:(1) 开放领域的复杂性,(2) 有限的上下文长度&#xff…

智启未来,AI筑梦科技新星”------华清远见成都中心2025冬令营圆满结束

2025年1月11日-16日,华清远见成都中心为期6天的“智启未来,AI筑梦科技新星”2025冬令营活动圆满结束。此次活动吸引了众多对人工智能和无人驾驶技术充满热情的学生参与,共同开启了一段点燃科技梦想的精彩旅程。 报道接待 以AI无人驾驶小车为核…

自动驾驶汽车目前面临的最大技术挑战是什么?

1. 感知技术的局限性 恶劣天气和复杂环境:当前的传感器在恶劣天气(如雨、雾、雪)和复杂道路条件下的感知能力仍有待提高。例如,激光雷达在穿透雨雾时的能力有限,易受强光干扰;摄像头在夜间和恶劣天气中的视…

使用repo下载android源码,Ubuntu安装repo

由于网络原因,有时可能连接不到google,所以这里推荐直接使用镜像网站下载,并配置repo的更新源为镜像源 1 , 新建一个文件夹,从清华源下载下载git-repo到本地 git clone https://mirrors.tuna.tsinghua.edu.cn/git/git…