1. 版本控制器Git
不知道你工作或学习时,有没有遇到这样的情况:我们在编写各种⽂档时,为了防止文档丢失,更改失误,失误后能恢复到原来的版本,不得不复制出⼀个副本,比如: “报告-v1” “报告-v2” “报告-v3” “报告-确定版” “报告-最终版” “报告-究极进化版” ... 每个版本有各自的内容,但最终会只有⼀份报告需要被我们使用 。 但在此之前的工作都需要这些不同版本的报告,于是每次都是复制粘贴副本,产出的文件就越来越 多,文件多不是问题,问题是:随着版本数量的不断增多,你还记得这些版本各⾃都是修改了什么 吗? 文档如此,我们写的项目代码,也是存在这个问题的!!1.1 版本控制器
为了能够更方便我们管理这些不同版本的文件,便有了版本控制器。所谓的版本控制器,就是能让你了解到⼀个文件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录工程的每⼀次改动和版本迭代的⼀个管理系统,同时也方便多人协同作业。 目前最主流的版本控制器就是 Git 。Git 可以控制电脑上所有格式的文件,例如 doc、excel、dwg、dgn、rvt等等。对于我们开发人员来说,Git 最重要的就是可以帮助我们管理软件开发项目中的源代码文件!1.2 git 简史
同⽣活中的许多伟大事物⼀样,Git 诞⽣于⼀个极富纷争大举创新的年代。 Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991−2002年间)。 到 2002 年,整个项目组开始启⽤⼀个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。 到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的⽬标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统。
- 速度
- 简单的设计
- 对⾮线性开发模式的强⼒⽀持(允许成千上万个并⾏开发的分⽀)
- 完全分布式
- 有能⼒⾼效管理类似 Linux 内核⼀样的超⼤规模项⽬(速度和数据量)
1.3 安装 git
yum install git
1.4 在 Github 创建项目
注册账号 这个比较简单, 参考着官网提示即可. 需要进行邮箱校验. 创建项目 1. 登陆成功后, 进入个人主页, 点击左下方的 New repository 按钮新建项目 2. 然后跳转到的新页⾯中输⼊项⽬名称(注意, 名称不能重复, 系统会自动校验. 校验过程可能会花费几秒钟). 校验完毕后, 点击下方的 Create repository 按钮确认创建。3. 在创建好的项目页面中复制项目的链接, 以备接下来进行下载。
下载项目到本地
创建好⼀个放置代码的⽬录。
git clone [url]
这里的 url 就是刚刚建⽴好的 项目 的链接.
1.5 三板斧
1. git add 将代码放到刚才下载好的目录中git add [⽂件名]
将需要用 git 管理的文件告知 git
2. git commit
提交改动到本地
git commit -m "XXX"
最后的 "." 表⽰当前⽬录
提交的时候应该注明提交日志, 描述改动的详细内容.
3. git push
同步到远端服务器上
git push
需要填入用户名密码. 同步成功后, 刷新 Github 页面就能看到代码改动了.
配置免密码提交(参考)
git本地免密码和账号pull、push_没有git账号怎么拉代码-CSDN博客文章浏览阅读1.2w次,点赞10次,收藏15次。说明:%HOME%,一般为C:\users\Administrator,也可以是你自己创建的系统用户名目录,反正都在C:\users\中一.windows下:需要创建一个.git-credentials文件,由于在Window中不允许直接创建以"."开头的文件,所以需要借助git bash进行,步骤如下:1.打开git bash客户端,进入%HOME%目录(即C:\users\自己的电..._没有git账号怎么拉代码https://blog.csdn.net/camillezj/article/details/55103149
4. 其他
- git log/status/pull
- .ignore
- 首次使用问题,需要现场看
2. 调试器 - gdb/cgdb使用
2.1 样例代码
// mycmd.c
#include <stdio.h>
int Sum(int s, int e)
{
int result = 0;
for(int i = s; i <= e; i++)
{
result += i;
}
return result;
}
int main()
{
int start = 1;
int end = 100;
printf("I will begin\n");
int n = Sum(start, end);
printf("running done, result is: [%d-%d]=%d\n", start, end, n);
return 0;
}
2.2 预备
- 程序的发布方式有两种, debug 模式和 release 模式, Linux gcc/g++ 出来的⼆进制程序,默认是 release 模式。
- 要使用gdb调试,必须在源代码⽣成⼆进制程序的时候, 加上 -g 选项,如果没有添加,程序无法被编译
$ gcc mycmd.c -o mycmd # 默认模式,不⽀持调试
$ file mycmd
mycmd: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically
linked, interpreter /lib64/ld-linux-x86-64.so.2,
BuildID[sha1]=82f5cbaada10a9987d9f325384861a88d278b160, for GNU/Linux
3.2.0, not stripped
$ gcc mycmd.c -o mycmd -g # debug模式
$ file mycmd
mycmd: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically
linked, interpreter /lib64/ld-linux-x86-64.so.2,
BuildID[sha1]=3d5a2317809ef86c7827e9199cfefa622e3c187f, for GNU/Linux
3.2.0, with debug_info, not stripped
2.3 常见使用
- 开始: gdb binFile
- 退出: ctrl + d 或 quit 调试命令
命令 | 作用 | 样例 |
list/l | 显示源代码,从上次位置开始,每次列出10行 | list/l 10 |
list/l 函数名 | 列出指定函数的源代码 | list/l main |
list/l ⽂件名:⾏号 | 列出指定文件的源代码 | list/l mycmd.c:1 |
r/run | 从程序开始连续执行 | run |
n/next | 单步执行,不进入函数内部 | next |
s/step | 单步执行,进入函数内部 | step |
break/b [⽂件名:]行号 | 在指定行号设置断点 | break 10 break test.c:10 |
break/b 函数名 | 在函数开头设置断点 | break main |
info break/b | 查看当前所有断点的信息 | info break |
finish | 执⾏到当前函数返回,然后停止 | finish |
print/p 表达式 | 打印表达式的值 | print start+end |
p 变量 | 打印指定变量的值 | p x |
set var 变量=值 | 修改变量的值 | set var i=10 |
continue/c | 从当前位置开始连续执⾏程序 | continue |
delete/d breakpoints | 删除所有断点 | delete breakpoints |
delete/d breakpoints n | 删除序号为n的断点 | delete breakpoints 1 |
disable breakpoints | 禁用所有断点 | disable breakpoints |
enable breakpoints | 启用所有断点 | enable breakpoints |
info/i breakpoints | 查看当前设置的断点列表 | info breakpoints |
display 变量名 | 跟踪显示指定变量的值(每次停止时) | display x |
undisplay 编号 | 取消对指定编号的变量的跟踪显⽰ | undisplay 1 |
until X行 号 | 执⾏到指定⾏号 | until 20 |
backtrace/bt | 查看当前执⾏栈的各级函数调⽤及参数 | backtrace |
info/i locals | 查看当前栈帧的局部变量值 | info locals |
quit | 退出GDB调试器 | quit |
本篇文章分享了关于linux环境下的基本开发工具,git以及gdb/cgdb的介绍。欢迎评论,分享交流。
标签:git,cgdb,breakpoints,gdb,mycmd,版本,Linux,断点 From: https://blog.csdn.net/2402_82689232/article/details/144392888