【Linux玩物志】Linux环境开发基本工具使用(终章) ——git与gdb调试器

W...Y的主页 😊

代码仓库分享 💕

 

前言:这是最后一篇Linux工具篇,今天这篇文章我们要来简单讲一件git与调试器gdb。

目录

使用 git 命令行

安装 git

在 Github 创建项目

注册账号

创建项目

​编辑 下载项目到本地

在 Gitee 创建项目 

创建项目

 下载项目到本地

三板斧第一招: git add

三板斧第二招: git commit

三板斧第三招: git push

 Linux调试器-gdb使用

背景

开始使用

调试中查看源代码

调试代码

命令总结


使用 git 命令行

安装 git

安装git就需要我们之前学习的工具yum:

命令:yum install git

Git是一个开源的分布式版本控制系统,由Linus Torvalds创建,用于有效、高速地处理从小到大的项目。它能够处理各种大小的项目,从小型项目到大型项目,如Linux内核。而我们熟知的Gitee与GitHub是提供Git仓库托管服务的平台,它们允许用户和团队托管和管理自己的Git仓库。

简而言之,Git是一个工具,而Gitee和GitHub是使用这个工具来托管和管理代码的平台,它们为用户提供了不同的服务和体验。 

在 Github 创建项目

注册账号

这个比较简单, 参考着官网提示即可. 需要进行邮箱校验.

创建项目

1. 登陆成功后, 进入个人主页, 点击左下方的 New repository 按钮新建项目

 2. 然后跳转到的新页面中输入项目名称(注意, 名称不能重复, 系统会自动校验. 校验过程可能会花费几秒钟). 校验完毕后, 点击下方的 Create repository 按钮确认创建.

3. 在创建好的项目页面中复制项目的链接, 以备接下来进行下载.

 下载项目到本地

创建好一个放置代码的目录.

git clone [url]

这里的 url 就是刚刚建立好的 项目 的链接.

在 Gitee 创建项目 

创建项目

 下载项目到本地

创建好之后点击下载或克隆 

复制上述链接到Linux中, 

git clone [url]

这里的 url 就是刚刚建立好的项目的链接即可,与GitHub相同。

三板斧第一招: git add

将代码放到刚才下载好的目录中

git add [文件名] 

将需要用 git 管理的文件告知 git

三板斧第二招: git commit

提交改动到本地

git commit . 

最后的 "." 表示当前目录。提交的时候应该注明提交日志, 描述改动的详细内容.

我们可以使用git commit -m  +” “。引号里面就写提交日志,这个日志会传到代码仓库中去。

三板斧第三招: git push

同步到远端服务器上

git push 

需要填入用户名密码. 同步成功后, 刷新 Github/Gitee 页面就能看到代码改动了。

第一次要配置的是你个人的用户名称和电子邮件地址。这两条配置很重要,每次 Git 提交时都会引用这两条信息,说明是谁提交了更新,所以会随更新内容一起被永久纳入历史记录:

$ git config --global user.name "John Doe"
$ git config --global user.email johndoe@example.com

 Linux调试器-gdb使用

背景

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

GDB 全称“GNU symbolic debugger”,是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada 等。实际场景中,GDB 更常用来调试 C 和 C++ 程序。所以对于一名Linux下工作的c/c++程序员,对gdb的了解是必不可少的。

开始使用

首先我们先创建一个Linux程序。

然后通过 gcc code.c -o test -g   编译该程序,-g使该编译后的文件是debug的,可以进行调试,不然默认情况下,gcc编译的文件是release的,无法进行调试。

我们想要进入debug模式时,我们可以在makefile中进行修改:

这样我们就可以进去调试了。 

指令:

gdb +被调试文件的文件名      #进入调试

quit         #退出调试

输入gdb test.c 就可以直接对我们之前编译后的test文件进行调试,如果想退出调试,输入quit。 

gdb会记录最近一次命令,所以输入一次后可以直接回车继续显示

调试中查看源代码

指令:

list 或 l + 行号: 注意l是小写的。执行一次显示10行,显示完所有代码后会有提示。

 

 

调试代码

指令:

run 或 r:代码就会运行到结束(如果没有断电或输入)。 

 如果需要打断点:

指令:

b + 行号 :在对应的行加上断点,r后会走到离程序开始最近的断点处。

我们也可以在某个函数上打断点,只需要b+函数名即可。

 

 info + b:可以查看我们的断点信息。

 删除断点:

d + 断点编号!!!

不是d + 行号。断点编号我们就可以使用info + b查看。

我们也可以暂时关闭某处断点,在disp enb可以查看断点状态,keep y是断点开,keep n 是断点关。

关闭断点:

disable + 断点编号 

 打开断点:

enable + 断点编号

逐语句是执行main函数中的语句,遇见函数直接运行完毕但不进去。逐过程是一条一条语句执行。就如同vs中的F10逐语句,F11逐过程。

逐过程指令:

next/n

逐语句指令:

s

vs中我们有对应的窗口,可以查看我们的变量事实信息,每运行一部变量可能都在变,在Linux中怎么查看?

 指令:

p + 变量名:可以看变量的当前状态,但是只有一下,不能长时间进行监视。

display + 变量名:可以长期查看变量的状态。

undisplay + 编号:取消查看变量的状态,此编号是创建的顺序编号。

 

还有一些常用的调试命令: 

 c:从一个断点运行到下一个断点。

finish:将一个函数运行结束就停下来

until:在一个范围内运行,知道结束停下来。(这里的范围一般是指循环中)

bt:查看调用堆栈。

还有一个比较特殊的命令,当我们有一个分支条件判断时,我们进行调试:

 

当我们flag==1时会输出haha,证明if分支正确,但是我们想要测试else分支时,一般情况下我们需要进行改程序,但是在Linux中不用这样,我们有一个set var指令。

指令:
set var name = value:修改一个变量的内容(不用改代码,多分枝测试)

 

这时我们就可以测试另一个分支。

命令总结

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

以上就是git与gdb全部内容,感谢大家观看。 

  • 18
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

W…Y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值