linux之git/gdb的使用与介绍

1.git的基本介绍

版本控制:每一个版本存一个档,回老版本叫回退。

仓库就是每个用户独有的一个文件夹。

本地仓库就是磁盘,远端仓库就是云服务器。

而git就是用与帮用户管理仓库的,其即可以管理本地仓库,也可以管理与远端仓库(gitee或github),因此其即是客户端也是服务区。

2.多人合作的本质

将一个云服务器的项目数据都同步到所有用用户的计算机上,每个用户只管理分配给他的那部分,不同部分的云端修改和同步数据不会存在矛盾,因此可以实现。

3.git的操作

1.同步云服务器

复制代码
git clone https://gitee.com/feng_wu_yin_li/galgame_love.git
//同步操作,可以直接在当前所在路径下打开云仓库

2.进入该云服务器目录中(所以要将外面的文件拷贝一份到云服务器的目录内)

3.add

复制代码
git add .
//上传当前目录中云服务器全部不存在或没完全同步的新文件

git status 查看git暂存区上传的文件

复制代码
[fengyouyinli@VM-0-2-centos galgame_love]$ git status
# On branch master
# Changes to be committed:
#   (use "git reset HEAD <file>..." to unstage)
#
#	new file:   iji

git log 查看所有日志

复制代码
git log

3.commit 提交日志信息

git commit -m "写什么都可以"

复制代码
[fengyouyinli@VM-0-2-centos galgame_love]$ git commit -m "dkad"

[master 6a5ad60] dkad
 1 file changed, 6 insertions(+)
 create mode 100644 iji

3.push 将本地文件上传到远端

复制代码
git push

git中最好只管理.c/.cpp/.h等源文件

.gitignore内部可以设置add中忽略的后缀文件.

复制代码
[fengyouyinli@VM-0-2-centos galgame_love]$ cat .gitignore
# Build and Release Folders
bin-debug/
bin-release/
[Oo]bj/
[Bb]in/

# Other files and folders
.settings/

# Executables
*.swf
*.exe
*.o
*.obj
*.i
//...

从云端传数据到windows只需要在空文件夹中点git中的clone输入云端的路径即可。windows传gitee就是常规操作。

4.上传矛盾问题

当两个用户往同一个目录下传代码时,一个用户传了之后,另一个用户再想传就要更新云同步才能传了(git会跟据用户本地仓库时间与云仓库时间比较来分析是否允许其上传,以保证其他人的数据不被丢失)

5.gdb的使用

gdb是linux的调试器。linux默认生成的文件是release的,加-g修饰后的才是debug的。

复制代码
gcc test -o test.c -g

gdb不好用,因此我们用cgdb.

复制代码
gdb test.c 
//以debug模式打开该文件

输入quit退出.

1.b

复制代码
b + n
//给第n行打断点

2.info b

复制代码
info b
//确认所有断点信息



//实操复制
(gdb) info b
Num     Type           Disp Enb Address            What
1	breakpoint     keep y   0x0000000000400535 in main at rt.c:3

在cgdb不退出时,num处的值一直递增,即使前面有断点被删了。

3.d

复制代码
d + n
//删除num为n的断点

4.n/s

n:逐过程到下一行代码(类似于f10)

s:逐语句到下一行代码(类似于f11)

cgdb会自动记录最新一条的指令,用enter可以一直执行。

5.r

r:回到第一个断点处

运行完会询问是否会到第一个断点处

6.bt查看栈调用

7.finish直接运行完当前所在函数(函数得返回值使存在寄存器中的)

8.p+变量 查看该变量的值

9.enable + n 使编号为n的断点能使用

10.disable + n 禁用编号为n的断点

11.c去到下一个断点处

12.until + n 执行到第n行就停止

13.display + 变量 一直展现该变量的数据(没使用一次指令就展现一次)

复制代码
1:   y  h

(gdb) display o
2: o = 32767
(gdb) info display
Auto-display expressions now in effect:
Num Enb Expression
2:   y  o
1:   y  h
//有对应的编号
  1. undisplay + n 停止编号为n的变量展现

15.p后面也就可以加变量的表达式

16.info locals 可以查看当前函数内局部变量的所有值

17.watch + 变量名 该变量的值改变时会通知(使用d删除)

18.set var 变量=n 临时改变该变量的值

  1. b + 行数 + 变量名 if(表达式) 条件编译,当条件成立时就在此处停止编译

20.condition 断点编号 表达式 给非条件断点设置条件(多用于让一个断点走了一次后就不再触发了)

21.esc进入代码屏,i回到cgdb指令屏(上面是代码屏,下面是指令屏)

相关推荐
Deitymoon2 小时前
linux——线程设置分离属性
linux
|_⊙2 小时前
Linux进程(上)
linux·运维·服务器
吕司2 小时前
Linux页表的概念
linux·运维·服务器
ShineWinsu2 小时前
对于Linux:环境变量的解析
linux·面试·笔试·进程·环境变量·本地变量·getenv
坚持就完事了2 小时前
Linux上编写和运行Python\Java
linux·运维·服务器
超绝振刀怪2 小时前
【Linux 环境变量和地址空间】
linux·环境变量·fork·写诗拷贝
lwx9148529 小时前
Linux-特殊权限SUID,SGID,SBIT
linux·运维·服务器
皮卡狮10 小时前
Linux权限的概念
linux
炘爚11 小时前
深入解析printf缓冲区与fork进程复制机制
linux·运维·算法