基础开发工具(下)

本篇目标:

学习git命令行的简单操作,能够将代码上传到gitee上

掌握简单gdb使用于调试

一.版本控制器git

1.安装git

如图:

由于我已经安装了git,自然是nothing to do,而未安装的,看到complete就代表安装成功了,而git

version可以看我们的git的版本。

2.在Gitee创建项目

<1>.注册账号

工作台 - Gitee.com处注册即可

<2>.创建项目 登陆成功后,直接点击页面右上角的+,如图:,再点击"新建仓库",然后在新的页面,根据需要填写仓库名称与路径,记得要勾选初始化。

<3>.在创建好的仓库里,点击克隆,再点击复制git clone +"地址"

3.git的简单指令

<1>.git clone +"地址"后,创建了一个目录,再进入目录里

<2>.git init,可用于初始化本地的git仓库

<3>.配置自己用户名和常用的邮箱,如图:

<4>.git add +[文件名]

如图:

但是这个也只是将test.c放到了暂存区里,还没有放到本地的仓库

<5>.git commit -m "存放的内容"

如图:

此时提交改动到本地,但是要注意添加的内容不要瞎写,我们可以git log看,如图:

此时仍没有关联到远程的仓库。

<6>.关联到远程仓库:git remote add origin + "HTTPS/SSH的地址"

<7>.git push,同步到远端服务器上,如图:

我们需要填写用户名与密码。

二.调试器-gdb/cgdb使用

1.样例代码

test.c中:

cpp 复制代码
#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;
}

makefile中:

cpp 复制代码
BIN=test
SRC=$(wildcard *.c)
OBJ=$(SRC:.c=.o)

$(BIN):$(OBJ)
    gcc -o $@ $^ 
%.o:%.c
    gcc -c $< -o $@     
                                                                    
.PHONY:clean
clean:                                                                                         
    rm -f $(BIN) $(OBJ)

2.预备

程序的发布方式有两种,debug模式和release 模式, Linux gcc/g++ 出来的⼆进制程默认是release 模式,所以要使用gdb调试,必须在源代码上成⼆进制程序的时候,加上-g 选项,如果没有添加,程序无法被编译成debug模式

例如:

这个是没有debug模式的,而在gcc加上-g 选项就可以编译成debug模式,如图:

3.cgdb常见使用

<1>.安装cgdb:

• Ubuntu:sudoapt-getinstall-y cgdb

• Centos: sudoyuminstall-ycgdb

<2>.开始: cgdb +[可执行文件] ,如图:

<3>.退出:q

<4>.其他:

|------------------------|------------------------|------------------|
| 命令 | 作用 | 例子 |
| list/l | 显⽰源代码,从上次位置开始,每次列出 10⾏ | l 10 |
| list/l 函数名 | 列出指定函数的源代码 | l main |
| list/l ⽂件名:⾏号 | 列出指定⽂件的源代码 | l mycmd.c:1 |
| r/run | 从程序开始连续执⾏ | r |
| n/next | 单步执⾏,不进⼊函数内部,逐过程F10 | next |
| s/step | 单步执⾏,进⼊函数内部,逐语句F11 | s |
| break/b [文件名:]行号 | 在指定⾏号设置断点 | b 10 b test.c:10 |
| info break/b | 查看当前所有断点的信息 | info b |
| finish | 执⾏到当前函数返回,然后停⽌ | finish |
| info/i locals | 查看当前栈帧的局部变量值 | info locals |
| p 变量 | 打印指定变量的值 | p i |
| continue/c | 从当前断点执行到下一个断点 | c |
| delete/d breakpoints n | 删除序号为n的断点 | d 1 |
| disable breakpoints | 禁⽤断点 | disable 17 |
| enable breakpoints | 启⽤断点 | enable 1 |
| info/i breakpoints | 查看当前设置的断点列表 | info b |
| display 变量名 | 跟踪显⽰指定变量的值(每次停⽌时) | display i |
| undisplay 编号 | 取消对指定编号的变量的跟踪显⽰ | undisplay i |
| until X ⾏号 | 执⾏到指定⾏号 | until 17 |

4.常见技巧

<1>.watch :执行时监视⼀个表达式(如变量)的值,如果监视的表达式在程序运行期间的值发生变化,GDB会暂停程序的执行,并通知使用者

<2>.set var 变量=值:修改变量的值

相关推荐
ID_180079054732 小时前
淘宝商品详情API的调用频率限制是多少?
大数据·数据库·json
2601_955363152 小时前
精准拓客时代:号码核验行业的痛点破解与技术赋能之路,氪迹科技法人号码筛选系统,阶梯式价格
大数据·人工智能
一只努力的微服务2 小时前
【Calcite 系列】深入理解 Calcite 的 AggregateUnionTransposeRule
大数据·数据库·calcite·优化规则
不一样的故事1262 小时前
测试的核心本质是风险管控
大数据·网络·人工智能·安全
运维老曾5 小时前
Flink MySQL source 自定义开发步骤
大数据·mysql·flink
competes12 小时前
学生需求 交易累计积分,积分兑换奖品
java·大数据·开发语言·人工智能·java-ee
科士威传动12 小时前
微型导轨从精密制造到智能集成的跨越
大数据·运维·科技·机器人·自动化·制造
尽兴-13 小时前
Elasticsearch Query DSL 进阶:高频查询范式与实战排坑
大数据·elasticsearch·jenkins·向量检索·去哪嗯检索·模糊匹配·地理空间查询
yang_B62115 小时前
噪声处理方法
大数据·人工智能·算法