【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可以修改一个变量的内容,比如:

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

相关推荐
神梦流6 分钟前
GE 引擎的内存优化终局:静态生命周期分析指导下的内存分配与复用策略
linux·运维·服务器
凡人叶枫8 分钟前
C++中输入、输出和文件操作详解(Linux实战版)| 从基础到项目落地,避坑指南
linux·服务器·c语言·开发语言·c++
wdfk_prog14 分钟前
[Linux]学习笔记系列 -- [drivers][input]serio
linux·笔记·学习
xuhe230 分钟前
[全流程详细教程]Docker部署ClawBot, 使用GLM4.7, 接入TG Bot实现私人助理. 解决Docker Openclaw Permission Denied问题
linux·docker·ai·github·tldr
Lsir10110_1 小时前
【Linux】进程信号(下半)
linux·运维·服务器
skywalk81631 小时前
unbound dns解析出现问题,寻求解决之道
运维·服务器·dns·unbound
酉鬼女又兒1 小时前
零基础入门Linux指南:每天一个Linux命令_pwd
linux·运维·服务器
云飞云共享云桌面1 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
skywalk81631 小时前
走近科学:unbound dns域名服务器自己本地解析出现问题,寻求解决之道
运维·服务器·dns·unbound
zl_dfq1 小时前
Linux 之 【多线程】(pthread_xxx、轻量级进程、原生线程库、线程ID、__thread、线程栈、线程与信号、线程与程序替换)
linux