文章目录
版本控制器Git
-
版本控制:就是决定使用某个文件的第几个版本【某个文件因为不够完美,会不断修改,导致这个文件的版本很多。但最后可能会发现第3个版本最好,但有可能自己都找不到第三个版本是什么了】
-
版本控制器:最主要的功能就是方便我们管理这些不同版本的文件。同时版本控制器能够了解到一个文件的历史记录(修改记录),简单来说就是记录每一次的改动和版本迭代的一个管理系统,同时也方便了多人进行协作(使用最广泛的是git)
-
在gitee创建一个仓库,就相当于:在远端新建了一个仓库。
(之前的小乌龟方式就是将本地推送到远端)
-
那如何将远端仓库,克隆到本地:
<1>确保在Xshell已经下载了gitee。(使用git --version,若返回git版本,则已经安装)

<2>复制仓库地址。

<3>在Linux中执行命令:
git clone 地址 -
git只会提交变化 的部分(并不是将代码备份多个。修改只是一部分,没修改的大部分内容再次提交会浪费)

-
如果新创建一个test.c,它有没有在仓库被保管起来。需要将test.c添加到本地仓库,之后push才会将test.c推送到远端
-
如何将一个【本地的文件】(在xshell中的文件)传到【远端仓库】:
先
git add 文件名将文件放在暂存区;(可以将多个文件都add,然后再一起提交commit)(暂存之后可以后悔)再
git commit将暂存区的文件上传到本地仓库,让文件被管理起来;最后
git push本地仓库内容同步到远端。(commit时的描述信息不能胡写)(题外话:如何在xshell中创建
.c文件:touch xxx.c
cpp
git add 文件名
git commit -m "描述信息" //不要乱写描述信息,这里写本次的核心工作
git push
git status可查看当前状态;
git log可以查看提交记录
-
Git只能管理头和源文件(.h,.c,.cpp)。临时文件不在其列
-
.gitignore是文件列表,这个列表里面放着(需要忽略的文件名后缀)
-
将一个远端仓库的内容拖到本地:先创建一个文件夹,再TortoiseGit,再clone,(记得提前将仓库的地址克隆)。

-
若Windows这边修改文件并提交了,但Linux不知道,它又修改了一部分:会导致冲突(rejected),需要
git push使得远端 和 本地同步。再进行git commit若Linux那边修改了,则会出现下图情况,此时需要
pull,之后再push

若是修改了xshell的文件,远端没有改,则重复步骤7即可
-
远端仓库,会比任何人都新(Linux或本地)。若和远端仓库冲突,则先进行pull进行同步,接下来再push自己最新的版本
Gdb
- Gdb是Linux开发中不可或缺的调试工具,尤其在定位代码逻辑错误和内存问题时表现卓越。
三个步骤:
1>使用断点找到问题
2>使用
finish确认问题是否在函数内(在进入某个函数之后,输入finish命令)3>在该函数内,可以使用命令
until 第几行,使得该函数在局部区域内快速执行到你想到的地方)
-
程序发布的两种方式:debug(会生成程序的调试信息的版本)和release(发布版本,一般gcc/g++编译默认release模式)。只有Debug模式的程序才能被调试
编译时加上-g选项,会让最后生成的可执行程序添加调试信息,成为debug模式。接下来再cgdb 文件名

-
进入gdb的方法:
gdb 可执行程序名,退出是quit进入cgdb就是
cgdb 可执行程序名(在gcc之后生成的那个),退出仍然quit【比如代码是first.c,gcc之后是myfirst,那就是cgdb ./myfirst】 -
l mytest.c:n代表着从第n行开始展示文件内容 -
(在cgdb中,让代码运行用r)程序一旦开始跑,就到程序结尾,如果不想跑到最后,需要在停止的位置打断点


还可以用info b查看断点;删除断点只能使用d 断点编号。断点数会依次递增,但如果退出cgdb,断点数会重新开始计数
如果想不删除这个断点,但又不想让这个断点发挥作用,可以让该断点"不使能",即disable 断点编号
-
调试就是想找到出问题的点。断点的本质是将代码"以块为单位"进行划分,快速定位出问题的区域。调试经常用到r(运行),s(会进入中途遇到的函数里),n(一行一行执行,不进入遇到的函数内部),finish(执行到当前函数,然后返回),until,continue,display(用来跟踪显示变量的值)
-
进入一个函数后,想确认是不是这个函数的问题,可以使用finish执行完当前函数,用来判断当前函数是否出问题
-
display查看上下文数据。当display a,display b,display c,那么回车它们三个会继续显示在程序进行中这几个值的变化,持续监视。不想要则undisplay a。

-
使用info locals显示当前栈帧的所有局部变量
-
逻辑顺序:先设置断点,b n,然后r进行运行,然后到断点处,使用s进入函数,接下来既可以n一下一下走,也可以until n直接到第n行

set var:修改运行中 的变量值:比如set var flag=1
条件断点:想知道i=10时,另一个值是多少,可以b 行 if i = 10【如何使用:进入有断点的函数之后,可以n(下一步),也可以c(continue) [相当于VS中的F5 从当前位置,直接运行到下一个断点处,如果中间出现了报错,那么错误就在当前范围内]】- 若想在运行过程中给已经存在的断点 添加条件,需要
condition 行数 条件 - cgdb分屏操作:
esc进入代码屏,i回到gdb屏
基础操作:
