W...Y的主页 😊
代码仓库分享 💕
前言:这是最后一篇Linux工具篇,今天这篇文章我们要来简单讲一件git与调试器gdb。
使用 git 命令行
安装 git
安装git就需要我们之前学习的工具yum:
命令:yum install git
Git是一个开源的分布式版本控制系统,由Linus Torvalds创建,用于有效、高速地处理从小到大的项目。它能够处理各种大小的项目,从小型项目到大型项目,如Linux内核。而我们熟知的Gitee与GitHub是提供Git仓库托管服务的平台,它们允许用户和团队托管和管理自己的Git仓库。
简而言之,Git是一个工具,而Gitee和GitHub是使用这个工具来托管和管理代码的平台,它们为用户提供了不同的服务和体验。
在 Github 创建项目
注册账号
这个比较简单, 参考着官网提示即可. 需要进行邮箱校验.
创建项目
- 登陆成功后, 进入个人主页, 点击左下方的 New repository 按钮新建项目
- 然后跳转到的新页面中输入项目名称(注意, 名称不能重复, 系统会自动校验. 校验过程可能会花费几秒钟). 校验完毕后, 点击下方的 Create repository 按钮确认创建.
- 在创建好的项目页面中复制项目的链接, 以备接下来进行下载.
下载项目到本地
创建好一个放置代码的目录.
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 [email protected]
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全部内容,感谢大家观看。
版权归原作者 W…Y 所有, 如有侵权,请联系我们删除。