基础开发工具(下)

本篇目标:

学习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 变量=值:修改变量的值

相关推荐
事变天下3 小时前
迈瑞的足球之夏:从一次救援到全球守护
大数据·科技
中微极客3 小时前
多智能体编排实战:CrewAI vs AutoGen(2026版)
大数据·网络·人工智能
西邮彭于晏4 小时前
图文详解:Git分支创建、合并与冲突解决|新手零门槛完整教程
大数据·git·elasticsearch
IanSkunk5 小时前
企业AI办公落地技术拆解:从WorkBuddy任务引擎到JOTO实施路径
大数据·人工智能
Xvisio诠视科技6 小时前
从“感知”到“理解”:空间计算如何成为具身智能世界模型的“数据底座”?
大数据·空间计算
张永伟营销6 小时前
从SEO到GEO:技术人视角下的生成式引擎优化架构与实践
搜索引擎·ai·架构
jerryinwuhan7 小时前
数据预处理技术 2026-2027-1 开篇-课程介绍
大数据·python
Elastic 中国社区官方博客7 小时前
Elastic 和 OpenAI 合作,将前沿智能引入非结构化企业数据
大数据·数据库·人工智能·elasticsearch·搜索引擎·ai
Elastic 中国社区官方博客7 小时前
Elasticsearch:搜索教程 - 全文搜索(一)
大数据·python·elasticsearch·搜索引擎·全文检索
西邮彭于晏9 小时前
Git 标签(Tag)与版本发布完整指南|附全场景命令速查表
大数据·git·elasticsearch