【Linux】git和gdb

下面还有两个Linux中会用到的工具,一个是给git ,可以叫版本控制器,就是对我们写的代码进行版本控制

一个是gdb ,就是我们C语言/C++的代码调试工具

下面我们分别来介绍一下

git

git和Linux一样,也是一个开源项目,就是当初Linux的创始人林纳斯·托瓦兹创建的。git是一个开源的工具,那么他和gitee和github之间有什么关系呢?其实gitee和github只是一个网站,这个网站的底层用的还是给git,它不过是把底层git的信息显示到网站上,来满足人们的需求

那我们如何在gitee或github上建立远端仓库并且跟本地的仓库联系起来呢?我们以gitee为例

我们先在gitee网站上新建仓库

点击克隆

找到https的链接复制下来,然后到我们的Linux中输入

这样就把我们的远端仓库克隆到本地了,第一次克隆需要输入用户名邮箱的信息,在命令行中输入这个就行

下面是我们如何提交本地git和同步到远端git
我们克隆远端仓库到本地后本地就多了一个文件夹

我们要提交到本地git要首先把文件拷贝进这个文件夹

之后我们进入linuxcode这个文件夹,可以看到我们拷贝进来的文件

之后输入下面的指令

这样就提交到本地git了,如果像同步到远端,要进行git push命令

之后它会要求我们输入gitee的邮箱和密码,输完之后我们的远端git就更新了
上面是我们简单的一些操作,就负责提交本地和远端,下面还有几个命令帮助我们更好的学习git

git log可以查看历史提交记录

用了这个命令,那么你之前所有的提交信息都会显示出来

git status 看看还有没有什么文件可以提交的,查看状态

我们可以直接在linuxcode这个目录下删除我们拷贝进来的文件,因为删除操作也属于一种修改,所以删除后也可以commit和push

git pull 当我们多人合作时,每个人都会提交代码到远端,当远端的代码比我们本地的代码版本要新时,我们就必须先更新我们本地git的代码,就是pull拉取到本地,之后再push推送到远端
我们其实可以看到linuxcode这个目录下还有一些隐藏文件

其中**.git这个文件中存放的就是我们的修改信息**

.gitignore这个文件中放的是一些后缀,表示有这些后缀的文件就不要提交了,并且在我们改这个文件后,它也是即时生效的

gdb

下面我们说一下gdb,它是一个调试代码的工具,我们知道发布软件有两种方式,一种叫debug一种叫release,只有在debug版本下才可以调试,gcc默认是生成release版本,所以我们在gcc命令下要加一个-g来表示要生成debug版本,就像这样

debug版本下可以调试就是因为这个版本下的可执行程序加了调试信息,它占的空间也是比较大的,我们也可以对比一下

我们也可以通过下面的指令看到多的内容


上面是一些基本的知识,下面是gdb的一些常用的指令用于我们的调试

第一个是进入调试,quit是退出调试

l + 行号是显示指定行附近的代码

b是breakpoint,意思是打断点

比如

b 10在第十行打断点

b Sum在这个Sum函数的第一行打断点

b add.c:7指定文件和行号打断点

info b查看所有打过的断点

我们在打完断点后用info b可以看到

最前边一行就是每个断点的编号,我们如果想删除断点也需要通过编号来删除

d就是delete

d 2就是删除第二个断点

r就是run,直接执行完程序

enable/disable+断点编号 就是开启关闭断点
n是我们的逐过程调试,就是VS中的F10,不进入函数

s是逐语句调试,就是F11,进入函数

p+变量或地址 可以显示具体的内容

display +变量或地址可以常显示,这个也是有编号的

undisplay+编号可以去常显示
c可以使程序从上一个断点直接到下一个断点

bt可以查看调用堆栈

finish是将一个函数运行结束就停下来

until+行号 是在某一范围内直接运行到指定行

set var可以修改一个变量的内容,比如:

我们这个指令的用处一般是给条件语句用的,一般不会执行到的条件语句我们可以赋值来执行到那,来判断我们的代码是否有误

相关推荐
对你无可奈何30 分钟前
关于Ubuntu的 update造成的内核升级
运维·服务器·ubuntu
qq_312920111 小时前
Nginx限流与防爬虫与安全配置方案
运维·爬虫·nginx·安全
GanGuaGua1 小时前
Linux系统:线程的互斥和安全
linux·运维·服务器·c语言·c++·安全
lsnm1 小时前
【LINUX网络】IP——网络层
linux·服务器·网络·c++·网络协议·tcp/ip
全糖去冰吃不了苦1 小时前
ELK 集群部署实战
运维·jenkins
不掰手腕1 小时前
在UnionTech OS Server 20 (统信UOS服务器版) 上离线安装PostgreSQL (pgsql) 数据库
linux·数据库·postgresql
Lynnxiaowen2 小时前
今天继续昨天的正则表达式进行学习
linux·运维·学习·正则表达式·云计算·bash
努力学习的小廉2 小时前
深入了解linux系统—— POSIX信号量
linux·运维·服务器
刘一说2 小时前
CentOS部署ELK Stack完整指南
linux·elk·centos
从零开始的ops生活2 小时前
【Day 50 】Linux-nginx反向代理与负载均衡
linux·nginx