【Linux】Linux命令行git和Linux调试器-gdb的使用

简介: Linux命令行git和Linux调试器-gdb的使用

一、Linux命令行git

1. git是什么

git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds(Linux之父)为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

下面我们举一个例子来深入理解git:

比如当你在本地写好某一个编程文档时,发现有些地方需要修改或者删除,有的人可能会直接在当前文件中直接修改,有的人会复制一份在上面修改,然后删除没用的文件。但是当你发现还是原来的文件好或者另外的版本好时,就可能手足无措了。

此时使用git工具,就是聪明之举了。我们可以在本地建一个版本库,每当我们需要修改时,就可以把之前的版本提交并标明此版的特点。这样文件夹里就只有一个编程文档了。当你需要哪个版本时,只要在版本库中恢复一下就可以了。


2. Gitee上创建仓库,克隆仓库到本地

💖 创建仓库:

这里我们先到Gitee上创建一个仓库。

image.png

当我们创建仓库时,可以将其初始化一下,例如:选择语言,表示我们要在这个仓库中提交什么编程语言的代码,以及添加.gitignore.gitignore的作用是为了帮助我们忽略一些不需要提交到仓库的文件,比如日志,临时文件,编译的中间文件等不要提交到代码仓库,这时就要设置相应的忽略规则,来忽略这些文件的提交。下面的Readme文件呢就是对仓库的介绍。最后我们点击创建就可以成功在Gitee上创建一个仓库了。

💕 克隆仓库到本地

(一)这里打开我们新创建的仓库,然后右边有个==克隆/下载==,我们点一下然后在弹出的选项中选择右边的复制就可以复制到远端仓库的链接。

image.png

(二)接下来我们打开我们的xshell,输入指令将仓库克隆到本地。

git clone 远端仓库链接

image.png

这里的learn_-linux就是我们远端的仓库,现在他已经被我们克隆到了本地,当然因为仓库在初始化的时候并不能直接设置为开源仓库,所以在我们进行克隆的时候他可能需要我们输入用户名和密码,这里我们直接把我们的Gitee账号的用户名和密码输入即可解决。


3. git三板斧

git add 将新增文件添加到暂存区

这里我们需要先将进入我们的仓库,然后新建一个目录将需要提交的代码拷贝这个目录下,:

image.png

这里我们可以看到之前写的代码已经被拷贝到了目标文件夹下,接下来我们进行git add操作。

image.png

在我们使用git add进行操作后,我们可以使用git status指令查看暂存区状态,这里我们可以看到刚刚我们新0拷贝过来的文件已经在暂存区了。

git commit 将暂存区的文件添加到本地仓库

💕 指令:

git commit -m '日志'

image.png

我们这里的日志一定要写清楚所提交的代码主要是什么或者更改后新增加了什么样的功能,解决了什么bug,因为别人是可以看到我们的日志信息的,所以这个日志信息我们一定要认真写。

image.png

这里我们可以用git log指令来查看我们之前所提交的记录,以及我们提交者的姓名和邮箱都可以被清楚的查看到,所以我们在提交的时候一定要注意日志信息那些的。当然我们也可以使用git reflog指令来粗略的查看我们提交日志的记录。

git push 将本体仓库新增内容推送到远端

image.png

这里我们经过最后的git push之后就可以在我们的Gitee上看到我们所提交的代码了:

image.png


二、Linux调试器-gdb的使用

1. debug和release的区别

我们知道程序的发布方式有两种,debug模式和release模式。

Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂),便于程序员调试。

Release:发布版本,不对源代码进行调试,编译时对应用程序的速度进行优化,使得程序在代码大小和运行速度上都是最优的。(调试信息可在单独的PDB文件中生成)。

gdb呢其实就是Linux下的一个调试器,它可以通过指令的方式对我们的代码进行调试。但是平常我们在使用gcc对我们的代码进行编译的时候生成的默认版本是release版本,是不能进行调试的,所以我们在使用makefile的时候可以给我们的gcc 编译选项带上-g选项,这样我们的gcc在编译代码的时候默认生成的就是debug版本了。

image.png


2. 常用命令

gdb 可执行程序:开始调试

这里我们需要注意,当我们使用gdb进行调试的时候只能对我们生成的可执行程序进行调试。

image.png

l 行号/函数名:显示源码

这里我们从第0行开始显示,当我们按下指令后他会给我们显示从我们想要看的那一行代码往下的10行代码,当我们想要往下翻的时候,只需要再次输入l或者回车即可给我们显示接着上次代码的内容往下列,每次显示10行。

当然这里我们也需要注意如果我们要是在调试的过程中想要看代码的时候也可以直接使用l 行号来查看,这里显示代码并不会影响我们的调试。

image.png

r:开始调试

如果我们已经在某一行打了断点,当我们输入r后他会直接跳转到我们的断点处停下来,如果当前调试的过程中没有打断点,那么则会直接将整个程序执行完然后停下来。

image.png

b 行号/函数名:打断点/ info b:查看断点

这里我们需要注意的是:在我们查看断点时,Num表示的是断点的编号,Enb表示断点的状态是否打开,y表示断电开启,n表示断点关闭。What则表示断电具体所在的位置。

image.png

d 断点编号/break:删除断点

这里我们需要注意的是d 断点编号表示的是删除指定编号的断点,d break表示的是删除所有断点,当我们删掉断点后在使用info指令去查看断点时,就会显示断点不存在。

image.png

disable b 断点编号:关闭指定断点/ enable b 断点编号:开启指定断点

这里我们可以看到,当我们disable将断点关闭后Enb显示的断点是关闭状态,当使用enable将断点打开后Enb显示的断点是开启状态。

image.png

n:逐过程调试

这里我们可以看到执行n指令后,一次就可以跳过一个函数,和vs中的f10类似。

image.png

s:逐语句调试

当我们使用s指令进行调试的时候发现可以进入函数内部,然后一条一条语句执行,和vs中的f11类似。

image.png

display:长显示(内置类型,结构体等自定义类型)

image.png

undisplay:取消长显示

image.png

until 行号:在函数内进行指定位置跳转,执行完区间代码

这里我们可以看到直接从断点处执行到了我们的18行。

image.png

c:从一个断点处直接运行至下一个断点处

image.png

当然gdb中还有很多其他的指令可以进行调试,这里就不一一列举了。

  • list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
  • list/l 函数名:列出某个函数的源代码。
  • r或run:运行程序。
  • n 或 next:单条执行。
  • s或step:进入函数调用
  • break(b) 行号:在某一行设置断点
  • break 函数名:在某个函数开头设置断点
  • info break :查看断点信息。
  • finish:执行到当前函数返回,然后挺下来等待命令
  • print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数
  • p 变量:打印变量值。
  • set var:修改变量的值
  • continue(或c):从当前位置开始连续而非单步执行程序
  • run(或r):从开始连续而非单步执行程序
  • delete breakpoints:删除所有断点
  • delete breakpoints n:删除序号为n的断点
  • disable breakpoints:禁用断点
  • enable breakpoints:启用断点
  • info(或i) breakpoints:参看当前设置了哪些断点
  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值
  • undisplay:取消对先前设置的那些变量的跟踪
  • until X行号:跳至X行
  • breaktrace(或bt):查看各级函数调用及参数
  • info(i) locals:查看当前栈帧局部变量的值
  • quit:退出gdb

相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
1月前
|
存储 Shell Linux
【Shell 命令集合 文件管理】Linux git命令使用教程
【Shell 命令集合 文件管理】Linux git命令使用教程
34 0
|
1月前
|
Linux 开发工具 数据安全/隐私保护
【Linux】—— git的管理以及使用
【Linux】—— git的管理以及使用
|
4天前
|
Linux 开发工具 C语言
【linux基础(七)】Linux中的开发工具(下)--make/makefile和git
【linux基础(七)】Linux中的开发工具(下)--make/makefile和git
|
18天前
|
Linux
Linux命令行快捷键
Linux命令行快捷键
|
1月前
|
Shell Linux 开发工具
【Shell 命令集合 系统管理 】Linux 查看当前Git仓库的提交历史 gitps命令 使用指南
【Shell 命令集合 系统管理 】Linux 查看当前Git仓库的提交历史 gitps命令 使用指南
18 0
|
1月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 】Linux 将参数作为命令行输入 eval命令 使用指南
【Shell 命令集合 系统设置 】Linux 将参数作为命令行输入 eval命令 使用指南
25 0
|
NoSQL Linux 编译器
【Linux】——调试器-gdb的使用
【Linux】——调试器-gdb的使用
|
1月前
|
NoSQL Linux 编译器
『Linux升级路』基础开发工具——gdb篇
『Linux升级路』基础开发工具——gdb篇
|
1月前
|
Linux Shell
Linux命令行快捷键和技巧
Linux命令行快捷键和技巧
29 0
|
开发工具 git 数据安全/隐私保护
git-quick-start 动画讲解Git命令行
来源:http://git.oschina.net/wzw/git-quick-start#git-quick-start git-quick-start 这是一个git的快速入门项目,使用一些gif图片来播放一些基础的git命令使用方法。
726 0

热门文章

最新文章