一、版本控制器Git
注意:git是一个具有网络功能的版本控制器,且其客户端和服务的是一体的
1.1版本控制器
为了能够更方便我们管理这些不同版本的文件,便有了版本控制器。所谓的版本控制器,就是能让你了解到一个文件的历史,以及它的发展过程的系统。通俗的讲就是一个可以记录工程的每一次改动和版本迭代的一个管理系统,同时也方便多人协同作业。目前最主流的版本控制器就是Git。Git可以控制电脑上所有格式的文件,例如doc、excel、dwg、dgn、rvt等等。对于我们开发⼈员来说,Git最重要的就是可以帮助我们管理软件开发项目中的源代码文件
1.2git简史
同生活中的许多伟大事物一样,Git诞生于一个极富纷争大举创新的年代
Linux内核开源项⽬有着为数众多的参与者。绝大多数的Linux内核维护工作都花在了提交补丁和保
存归档的繁琐事务上(1991−2002年间)。到2002年,整个项⽬组开始启⽤⼀个专有的分布式版本控制系统BitKeeper来管理和维护代码,到了2005年,开发BitKeeper的商业公司同Linux内核开源社区的合作关系结束,他们收回了Linux内核社区免费使⽤BitKeeper的权力。这就迫使Linux开源社区(特别是Linux的缔造者LinusTorvalds)基于使⽤BitKeeper时的经验教训,开发出⾃⼰的版本系统。他们对新的系统制订了若干。
目标:
• 速度
• 简单的设计
• 对非线性开发模式的强⼒支持(允许成千上万个并⾏开发的分⽀)
• 完全分布式
• 有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)
自诞生于2005年以来,Git日臻成熟完善,在高度易⽤的同时,仍然保留着初期设定的⽬标。它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统
1.3安装git
安装命令行:
ubuntu:apt install git
centos:yum install git
查看是否下载成功
git --version
1.4下载项目到本地
创建好一个放置代码的目录
git clone [远程仓库的地址]

1.5git三板斧
(1)git add将代码放到刚才下载好的目录中:git add .[或者文件名字]
注意:将需要用git管理的文件告知git,最后的"."表示当前目录,
(2)git commit提交改动到本地:git commit -m "提交信息"
注意:提交的时候应该注明提交日志, 描述改动的详细内容,且-m不能去掉
(3)git push同步到远端服务器上:git push
注意:需要填入用户名密码。同步成功后,刷新Github页面就能看到代码改动了

1.6查看历史提交记录
git log就可以查看历史提交记录

1.7查看提交状态
git status可以查看提交状态

二、调试器-gdb/cgdb使用
2.1背景
(1)程序的发布方式有两种, debug 模式和 release 模式,Linux gcc/g++ 出来的二进制程序,默认是release模式。
(2)要使用gdb调试,必须在源代码生成二进制程序的时候, 加上-g选项,如果没有添加,程序无法被编译
注意:gcc编译方式发布得默认是release版本,无法直接进行调试,可以使用readelf -S查看debug的信息


2.2常见使用
• 开始: gdb 调试文件名字
• 退出: ctrl + d 或 quit 调试命令
|-----------------------|----------------------------|-------------------------------|
| 命令 | 作用 | 样例 |
| list/l | 显示源代码,从上次位置开始 | 每次列出10行 :list/l 10 |
| list/l 函数名 | 列出指定函数的源代码 | list/l main |
| list/l 文件名 行号 | 列出指定文件的源代码 | list/l mycmd.c:1 |
| r/run | 从程序开始连续执行 | run/r |
| n/next | 单步执行,不进入函数内部,逐过程F10 | next/n |
| s/step | 单步执行,进入函数内部, 逐语句F11 | step/s |
| break/b[文件名:]行号 | 在指定行号设置断点 | break 10/break test.c:10/b 10 |
| break / b 函数名 | 在函数开头设置断点 | break main |
| info break/b | 查看当前所有断点的信息 | info break/info b |
| finish | 执行到当前函数返回,然后停止 | finish |
| print/p 表达式 | 打印表达式的值 | print start + end |
| p 变量 | 打印指定变量的值 | p x |
| display 变量名 | 跟踪显示指定变量的值(每次停止时都显示要跟踪的变量) | display x |
| set var 变量 = 值 | 修改变量的值 | set var i = 10 |
| continue/c | 从当前位置开始连续执行程序 | continue |
| delete/d breakpoints | 删除所有断点 | delete breakpoints |
| delete/dbreakpoints n | 删除序号为n的断点 | delete breakpoints 1 |
| disable breakpoints | 禁用所有断点 | disable breakpoints |
| enable breakpoints | 启用所有断点 | enable breakpoints |
| info /i breakpoints | 查看当前设置的断点列表 | info breakpoints |
| undisplay 编号 | 取消对指定编号的变量的跟踪显示 | undisplay 1 |
| until X行号 | 执行到指定行号 | until 20 |
| backtrace/bt | 查看当前执行栈的各级函数调用及参数 | backtrace |
| info/i locals | 查看当前栈帧的局部变量值 | info locals |
| quit | 退出gdb调试器 | quit |
2.3gdb使用各项选项样例:
gdb调试l指令查看:
n和run调试

