【Linux】第十站:git和gdb的基本使用

这篇具有很好参考价值的文章主要介绍了【Linux】第十站:git和gdb的基本使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、git的基本操作

1.gitee新建仓库注意事项

如下所示,是我们的新建仓库时候的注意事项

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

我们需要注意的是

我们要选择开源

对于这个初始化仓库,我们现在可选可不选,选的话按照我们当前的语言即可,这个.gitignore这个文件的作用如果文件后缀与文件里面的相同的话,是不会被选择提交的,而是忽略的,因为我们提交代码的时候只关心源代码。

对于这个开源许可证,其实大同小异,我们随便选一个即可

这个设置模板也是可以选也可以不选的,我们可以先选一个Readme文件

当我们打开这个gitignore文件的时候,里面的后缀就是如下,它也是可以被修改,添加我们不想要的后缀

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

2.git的安装

我们得先检查一下git是否安装

直接输入下面的即可

git --version

如果弹出的是这个那么就说明已经安装了

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

否则我们就要去下载,用如下的命令去下载

yum install git

3.git的克隆

我们先去将仓库给克隆下来

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

然后再linux上

我们输入

git clone xxxxxxxxxxx   //xxxxx代表刚刚复制的东西

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

注意再这一步,如果要让我们输入密码的话,我们直接输入gitee的账号密码即可

然后我们可以进入test里面去看看

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

由于有个文件是隐藏的,所以我们使用a

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

其中.git这是一个隐藏目录,它里面有很多东西记录着我们的行为,我们不要对他做出任何修改

如下是将一个文件先拷贝到这个当前目录中

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

4.git的add

我们直接输入

git add 路径

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

如上所示,就会将我们当前路径的所有文件全部提交到暂存区

5.git的commit

git commit -m "消息"

如下所示,当我们add完成以后,我们需要commit,这一步的目的是才是将文件提交到仓库中

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

这里如果我们是新的用户的话,那么它会让你配置一个邮箱和名字。我们直接填写即可

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

这一步主要是为了对代码进行溯源。因为我们的代码如果出错的话,需要进行溯源

然后我们就可以进行前面的操作了

6.git的push

如下所示

git push

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

在push的时候,会让我们输入gitee的手机号和密码,我们直接输入即可

然后我们就可以看到gitee上已经成功提交了代码

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

7.git log

git log 

上面这条命令可以去查看我们之前的提交记录

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

8.git status

这个可以查找提交状态

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

如果我们新建了一个文件,会提醒当前有一个文件并没有被托管

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

如果我们按照它上面说的git add了

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

那么会再次提醒git commit

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

如果我们commit了,就会让我们使用push

9. .gitignore

当我们进去这个文件的时候,内部是这样的

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

我们可以去修改它以此防止某些后缀的文件被提交

比如我们添加这两个

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

我们可以看到,这样的话,p和pp已经被忽略了

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

二、Linux调试器—gdb

1.背景

程序的发布方式有两种,debug模式和release模式
Linux gcc/g++出来的二进制程序,默认是release模式
要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

比如如下的代码中

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

我们如果直接编译的话,其实是release版本的

我们可以使用这个命令来查看

readelf -S test | grep -i debug

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

可见没有找到任何调试信息

如果我们是dubug编译的话,加上g就可以了

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

我们可以发现,如果是debug下的话会有debug信息的

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

如果要被gdb调试,必须是debug形式的

2.gdb安装、进入与退出

我们先来安装gdb,它的安装命令为

sudo yum -y install gdb.x86_64

我们先让代码如下所示

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

当我们想要进入gdb的时候,我们可以直接

gdb test

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

当我们想要退出的时候

我们可以输入quit或者q指令来退出

3.list/l

这条指令的作用是显示出源代码,每次列10行

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

如果它后面跟一个数字,那么会显示以该数字为中心的10行代码,如果后面跟一个函数,则显示该函数的代码

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

如果我们上一条指令是list/l的话,那么我们下一次就可以不用再继续输入list/l,直接回车,就会再次弹出list/l这条指令的效果。即gdb会记住最近一次的指令

4.r/run运行程序

这条指令的作用是运行程序。当程序没有断点的时候,它就会直接运行到结尾,它如同vs2022中的F5

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

如果程序有断点,则直接运行到下一个断点处(仅限刚开始)

5. break/b 打断点

这个指令需要在其后面加上一个数字或者一个函数名

如果是数字的话,那么会在该行上面打上断点,如果是函数名则会在该函数开头打上断点

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

如果是多文件的话,我们需要指定文件去打断点

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

6.info/i b 查看断点

我们刚刚已经打好了断点,可是现在的问题是,我们直接使用list的话,是看不到断点的

所以我们就需要使用这条指令去查找我们当前已有的断点

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

这个第一列表示的是断点的编号,Enb下面的这一行代表的是这个断点是否起作用

Address代表的是该断点的地址。

What代表的是该断点是第多少行

7.delete/d (n)删除(第n行的)断点

该指令的作用是如果不加n,则删除所有断点,如果加n,则删除编号为n的断点,注意必须是按照编号进行删除

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

注意对于断点,如果我们使用q退出了调试,那么之前的断点都会消失

当我们将断点打好以后,再去运行的话,那么这个程序它就会跑到断点处停止,因为这个r的操作就是一个类似于F5的操作

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

8. n/next逐过程

它就类似于vs2022中的F10功能一样,可以逐过程的执行

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

当我们一直使用n调完了以后,那么如果我们继续查看断点的话,还会显示出断点的执行次数

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

9. s/step逐语句

这里就相当于vs2022的F11

我们可以使用F11进入到函数内部

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

10. p 监视

这个指令就类似于vs2022的监视窗口,它可以监视某一个变量的值

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

11.display 常显示

这个指令和p的差不多,不过弥补了p的一些缺陷,那就是p它当执行下一步的时候又需要重新去调用查看了。而这个常显示是不会这样的

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

12.undisplay (n) 取消常显示

这个命令的作用是取消常显示

不过要注意的是这个n它代表的是这个编号,而不是这个变量名

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

13.until n跳到第n行

在前面,我们会发现,我们已经陷入了一个循环了,并且不是很容易就能退出的,所以我们需要使用until n指令,直接跳转到第n行

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

14.finish 结束当前函数

有时候,我们会希望可以直接的结束当前的函数,我们当然可以用until,不过finish是更加方便的

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

15.continue/c 从当前开始连续执行

这个命令的意思是从当前开始连续进行,直到遇到下一个断点

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

16.disable/enable breakpoints 禁用/使能断点

当我们有一个断点不想要删除且我们暂时还不想用它的时候,我们可以将它禁用

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

禁用以后它就看上去不存在,但是还是有这个断点的

17.set var:修改变量的值

如下所示,这个可以在调试环境下直接修改某个变量的值

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

18.breaktrace(或bt):查看各级函数调用及参数

我们将代码改为如下

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

它就类似于栈帧一样,当我们有五层栈帧的时候,bt显示如下

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

19.info(i) locals:查看当前栈帧局部变量的值

如下所示,当我们处于该层栈帧的时候,可以看到当前的局部变量的值

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器

也可以使用i来代替

【Linux】第十站:git和gdb的基本使用,【Linux】,linux,git,运维,c++,shell,服务器文章来源地址https://www.toymoban.com/news/detail-742682.html

三、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):查看各级函数调用及参数
  • info(i) locals:查看当前栈帧局部变量的值
  • quit:退出gdb

到了这里,关于【Linux】第十站:git和gdb的基本使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux运维之shell基础

    基本语法: 注意事项: ①[ 条件判断式 ],中括号和条件判断式之间必须有空格 ②if 后要有空格 例如,现在写一个if.sh脚本文件 基本语法: 注意事项: (1)case 行尾必须为单词“in”,每一个模式匹配必须以右括号“)”结束。 (2)双分号“;;”表示命令序列结束,相当于

    2024年02月02日
    浏览(56)
  • 【Linux工具】编译器、调式器、项目自动化构建工具以及git的使用3(GDB调试器的基础使用)

    作者:爱写代码的刚子 时间:2023.7.18 前言:本篇博客主要讲解Linux中调试器的使用,为之后的Linux编程打下坚固的基础。 背景 程序的发布方式有两种,debug模式(能被调试 )和release模式 Linux gcc/g++出来的二进制程序, 默认是release模式 要使用gdb调试,必须在源代码生成二进制程

    2024年02月17日
    浏览(45)
  • Linux运维之初识shell

    系统定时任务需要用到 crontab 命令,但是使用此命令有一个前提,即需要打开 crond 服务。为了不那么复杂,可以直接使用我之前学的 systemctl 命令重新启动 crond 服务。 语法:``crontab [-e -l -r] ` 选项:-e 编辑crontab定时任务;-l 查询系统crontab任务;-r 删除当前用户的所有cronta

    2023年04月27日
    浏览(40)
  • 【linux】git和gdb调试工具

    这两个步骤用于识别提交代码的身份,一个你的名字,一个你的邮箱 开启本地仓库 克隆本地仓库成功 我们将这个仓库拷到了111目录底下. 我们发现少了一个.gitignore,因为.gitignore是隐藏文件,所以使用ls -la查看 用于查看提交状态 上面可以看到提交人的信息,以及时间,以及提

    2024年02月22日
    浏览(36)
  • Linux6.yum,git,gdb

    1.yum三板斧 yum list :显示所有能安装的软件。 yum lisy | grep 软件 :搜索软件。 yum install -y :安装软件。 yum remove -y 软件 :删除已经安装的软件。 2.git git clone 仓库网址 :添加仓库,按回车之后。需要输入账户和密码。 git add 文件 :把文件添加到本地仓库。 git commit -m \\\"提交日志\\\" :提交

    2024年02月12日
    浏览(32)
  • 波奇学Linux:git和gdb调试

    git用来版本控制,同样是版本控制的软件还有svn等。 git的特定是具有网络功能的版本控制器,开源,client和server是一体的。(去中心化分布式管理)  client和server一体意味着远程仓库和本地仓库是平等地位,远程仓库是特殊的仓库而已,我们的clone远程仓库,某种意义上相当于

    2024年02月16日
    浏览(33)
  • 【Linux命令行与Shell脚本编程】第十六章 Shell函数

    脚本函数基础 函数返回值 在函数中使用变量 数组变量和函数 函数递归 创建库 在命令行中使用函数 可以将shell脚本代码放入函数中封装起来,这样就能在脚本的任意位置多次使用. 函数是一个脚本代码块,可以并在脚本中的任何位置重用它。当需要在脚本中使用该代码块时

    2024年02月14日
    浏览(52)
  • 【Linux】第三十站:进程间通信

    两个或者多个进程实现数据层面的交互 因为进程独立性的存在,导致进程通信的成本比较高 通信是有成本的,体现在要打破进程独立性 基本数据 发送命令 实现某种协同 通知 … 最终都是要通信起来 进程间通信的本质:必须让不同的进程看到同一份“资源” “资源”:特定

    2024年02月20日
    浏览(31)
  • 【Linux入门】Linux下git的基本使用

    以gitte为例: 创建好仓库以后点击克隆/下载,复制链接。 然后进入linux,找到自己想存放的文件夹,进入后输入 git clone ; 如果是开源项目,则可以直接clone到本地,如果是私有项目,则需要输入自己的gitte账号与密码。 此时就将仓库克隆到了本地。 补充: 1.打开README文件可

    2024年02月10日
    浏览(37)
  • Linux系统编程学习 NO.9——git、gdb

    本篇文章简单介绍了Linux操作系统中两个实用的开发工具git版本控制器和gdb调试器。 git是一款开源的分布式版本控制软件。它不仅具有网络功能,还是服务端与客户端一体的软件。它可以高效的处理程序项目中的版本管理。它是Linux内核的设计者Linus Torvalds为了帮助管理Linux内

    2024年02月05日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包