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全部内容,感谢大家观看。