【Linux】Linux基础开发工具(git、dbg)

本文是小编巩固自身而作,如有错误,欢迎指出!

目录

一、版本控制器------git

1.版本控制器是什么?

2.github与gitte

3.在github创建项目

3.1创建项目

3.2将本地代码上传至github

3.3将github代码下载到本地

二、调试器------gdb/cgdb使用

1.预备

2.常见使用方法


一、版本控制器------git

说到git,想必大家并不陌生,像我们熟知的gitte和github都是我们觉得很相关的东西,那么git到底是什么?git是一种版本控制器

1.版本控制器是什么?

我们在编写各种⽂档时,为了防⽌⽂档丢失,更改 失误,失误后能恢复到原来的版本,不得不复制出⼀个副本,⽐如:

"报告-v1" "报告-v2" "报告-v3" "报告-确定版" "报告-最终版"

每个版本有各⾃的内容,但最终会只有⼀份报告需要被我们使⽤。 但在此之前的⼯作都需要这些不同版本的报告,于是每次都是复制粘贴副本,产出的⽂件就越来越 多,⽂件多不是问题,问题是:随着版本数量的不断增多,你还记得这些版本各⾃都是修改了什么 吗?

⽂档如此,我们写的项⽬代码,也是存在这个问题的!!

所谓的版本控制器,就是能让你 了解到⼀个⽂件的历史,以及它的发展过程的系统。通俗的讲就是⼀个可以记录⼯程的每⼀次改动和 版本迭代的⼀个管理系统,同时也⽅便多⼈协同作业。

2.github与gitte

Github和gitee是git的两个分支。相较于 Github,gitee作为国内的git虽然在数量上不如 Github,但是门槛更低,所以推荐小白使用gitee。

git是一个去中心化的版本控制器+网络通信

3.在github创建项目

3.1创建项目

登陆成功后,进⼊个⼈主⻚,点击左下⽅的New repository按钮新建项⽬

然后跳转到的新⻚⾯中输⼊项⽬名称(注意,名称不能重复,系统会⾃动校验.校验过程可能会花费⼏

秒钟).校验完毕后,点击下⽅的Create repository按钮确认创建.

3.2将本地代码上传至github

bash 复制代码
# 1. 创建 README.md 文件并写入标题
echo "# LINUX" >> README.md

# 2. 初始化 Git 仓库
git init

# 3. 将 README.md 添加到暂存区
git add README.md

# 4. 提交到本地仓库(提交信息用引号包裹)
git commit -m "first commit"

# 5. 将默认分支重命名为 main
git branch -M main

# 6. 关联远程 GitHub 仓库
git remote add origin https://github.com/你的仓库地址/LINUX.git

# 7. 推送代码到远程 main 分支,并绑定上游
git push -u origin main

3.3将github代码下载到本地

复制 GitHub 仓库的 HTTPS 地址(比如 https://github.com/username/repository.git),执行克隆命令:

bash 复制代码
git clone https://github.com/username/repository.git

如果用 SSH 地址(需要先配置 SSH 密钥),命令为:

bash 复制代码
git clone git@github.com:username/repository.git

更新已克隆的代码

bash 复制代码
git pull

二、调试器------gdb/cgdb使用

调试,大家想必在先前的c语言学习中已经学习过了,现在我们就看一看在linux环境下的调试工作是怎么完成的

1.预备

程序的发布⽅式有两种, debug 模式和 release 模式, 在Linux系统下gcc/g++ 出来的⼆进制程序,默认是 release 模式。

要使⽤gdb调试,必须在源代码⽣成⼆进制程序的时候,加上 -g 选项,如果没有添加,程序⽆法被 编译.

bash 复制代码
$ 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.常见使用方法

• 开始: gdb binFile(目标文件)

• 退出: ctrl + d 或quit 调试命令

bash 复制代码
# 1. 编译带调试信息的程序
gcc -g -o myapp main.c
 
# 2. 启动GDB
gdb ./myapp
 
# 3. 在main函数设置断点
(gdb) b main
 
# 4. 运行程序
(gdb) run
 
# 5. 单步执行
(gdb) n
 
# 6. 查看变量
(gdb) p count
 
# 7. 继续执行
(gdb) c
 
# 8. 退出
(gdb) q

本次分享就到这里结束,后续会继续更新,感谢阅读!

相关推荐
我爱学习好爱好爱1 小时前
ELK日志分析平台(五):Filebeat 部署与 Nginx 日志采集(输出至 Logstash)(基于Rocky Linux 9.6)
linux·nginx·elk
returnthem1 小时前
Docker数据卷
运维·docker·容器
繁华如雪亦如歌1 小时前
Linux:进程间通信
linux
填满你的记忆1 小时前
JVM 内存模型详解:Java 程序到底是如何运行的?
java·开发语言·jvm
芥子沫1 小时前
Memos捷径(Shortcuts)用法介绍
linux·服务器·windows
mengchanmian1 小时前
docker 国内云服务器开源镜像
运维·docker·容器
糟糕喔2 小时前
k8s运维-configmap和secret(4)
运维·容器·kubernetes
小温冲冲2 小时前
C++与QML交互指南:从基础到实战
开发语言·c++·交互
不会写DN2 小时前
Go中的泛型与any、interface有什么区别?
开发语言·后端·golang