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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

文章目录


一、Linux命令行git

1. git是什么

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

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

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

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


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

💖 创建仓库

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

在这里插入图片描述

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

💕 克隆仓库到本地

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

在这里插入图片描述

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

git clone 远端仓库链接

在这里插入图片描述

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


3. git三板斧

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

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

在这里插入图片描述

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

在这里插入图片描述

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

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

💕 指令

git commit -m '日志'

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述


二、Linux调试器-gdb的使用

1. debug和release的区别

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

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

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

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

在这里插入图片描述


2. 常用命令

gdb 可执行程序开始调试

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

在这里插入图片描述

l 行号/函数名显示源码

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

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

在这里插入图片描述

r开始调试

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

在这里插入图片描述

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

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

在这里插入图片描述

d 断点编号/break删除断点

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

在这里插入图片描述

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

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

在这里插入图片描述

n逐过程调试

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

在这里插入图片描述

s逐语句调试

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

在这里插入图片描述

display长显示内置类型结构体等自定义类型

在这里插入图片描述

undisplay取消长显示

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述
当然gdb中还有很多其他的指令可以进行调试这里就不一一列举了。

  • list/l 行号显示binFile源代码接着上次的位置往下列每次列10行。
  • list/l 函数名列出某个函数的源代码。
  • r或run运行程序。
  • n 或 next单条执行。
  • s或step进入函数调用
  • break(b) 行号在某一行设置断点
  • break 函数名在某个函数开头设置断点
  • info break 查看断点信息。
  • finish执行到当前函数返回然后挺下来等待命令
  • print§打印表达式的值通过表达式可以修改变量的值或者调用函数
  • 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)查看各级函数调用及参数
  • infoi) locals查看当前栈帧局部变量的值
  • quit退出gdb

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: linux

“【Linux】Linux命令行git和Linux调试器-gdb的使用” 的相关文章