Linux基础之git与调试工具gdb

目录

一、git的简单介绍和使用方法

1.1 git的介绍

1.2 git的使用方法

1.2.1 三板斧之git add

1.2.2 三板斧之git commit

1.2.3 三板斧之git push

二、gdb的介绍和一些基本使用方法

2.1 背景介绍

2.2 基本的使用方法


一、git的简单介绍和使用方法

1.1 git的介绍

       Git是一种分布式版本控制系统,广泛用于软件开发中跟踪文件变化。它允许多个开发者同时合作,记录文件的修改历史。他具有一下几个特点:

  1. 版本控制:Git可以跟踪文件的变化历史,开发者可以随时查看和恢复到先前的版本。这有助于管理项目的演进,并促进团队成员之间的协作。

  2. 分布式:与集中式版本控制系统不同,Git是分布式的,意味着每个开发者都在本地拥有完整的代码库副本。这使得可以离线工作,并且大多数操作都可以在本地进行,提高了效率。

  3. 分支与合并:Git允许开发者创建分支,即独立的开发线,用于开发新功能或修复bug,而不影响主代码库。开发完成后,可以将分支合并回主分支,实现变更的无缝集成。

  4. 远程仓库:Git支持远程仓库,可通过GitHub、GitLab、Bitbucket等平台进行托管。开发者可以推送本地的变更到远程仓库,并拉取其他人的更新,实现团队间高效的协作。

  5. 工作流程:Git支持多种工作流程,如集中式、特性分支、Gitflow等,使团队可以根据项目需求和结构选择适合的工作流程。这种灵活性使Git适用于不同规模和类型的项目。

       总的来说,Git是一个强大的版本控制和协作工具,提供了能够优化开发流程、保障代码变更完整性和可追溯性的功能。

1.2 git的使用方法

       在使用git之前呢,你得先确保自己有一个远程仓库,没有得话可以去gitee上建立一个,我这里就用gitee进行举例。
       创建好仓库后我们先将仓库克隆到本地来,使用指令:

git clone + 仓库链接

       克隆好之后,你会出现类似于我这样的一个目录:

      有了仓库之后,我就要来讲git中比较实用的三板斧操作了。

1.2.1 三板斧之git add

       首先我们随意的创建一个文件然后写点东西进去,我就写个hello world吧(可以直接在你的克隆的仓库目录下写,等会就不需要移动文件了)。然后使用指令:

git add + 文件名 或者 .

将你指定的文件,或者当前目录下的新文件,添加到本地仓库中去。
那怎么去看我们是否添加成功呢,这里有条指令可以让我们观看本地仓库的状态。

git status  (查看本地仓库的状态)


通过指令我们可以看到我们的本地仓库多了一个新文件test.c

1.2.2 三板斧之git commit

       这个时候文件还在我们的本地仓库,那怎么将其同步到我们的远程仓库中去呢,首先得先使用这里的指令。

git commit -m + "日志"

这里记住:日志一定不要乱写!!
因为面试官是用可能去看你的日志的,要是你一通乱写,那岂不是很尴尬。

这个指令主要是提交改动到本地。

1.2.3 三板斧之git push

这最后一招,才是将我们的代码同步到我们的远程仓库上。指令:

git push

需要填入用户名密码. 同步成功后, 刷新 Gitee页面就能看到代码改动了。

提交成功。

在这里我在补充两个指令:

git log (查看日志)

git pull(同步远端和本地仓库)

二、gdb的介绍和一些基本使用方法

2.1 背景介绍

  • 程序的发布方式有两种,debug模式和release模式。
  • Linux gcc/g++出来的二进制程序,默认是release模式。
  • 如果一份代码要被调试,那这份代码的发布模式一定得是debug的。
  • 要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项。

2.2 基本的使用方法

开始调试:gdb + 调试文件名
退出: ctrl + d 或 quit

  •  list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。

  • list/l 函数名:列出某个函数的源代码。

  • r或run:运行程序。

  • n 或 next:单条执行。(相当于VS中的逐过程调试 即F10)

  • s或step:进入函数调用(相当于VS中的逐语句调试 即F11)

  • break(b) 行号:在某一行设置断点

  • break 函数名:在某个函数开头设置断点

  • info break :查看断点信息。

  • finish:执行到当前函数返回,然后挺下来等待命令

  • print(p):打印表达式的值,通过表达式可以修改变量的值或者调用函数

  • p 变量:打印变量值。

  • set var:修改变量的值

  • continue(或c):从当前位置开始连续而非单步执行程序

  • run(或r):从开始连续而非单步执行程序

  • delete breakpoints:删除所有断点

  • delete breakpoints n:删除序号为n的断点
    (在gdb中,断点是有编号的,删除要根据编号删除)

  • disable breakpoints:禁用断点

  • enable breakpoints:启用断点

  • info(或i) breakpoints:参看当前设置了哪些断点

  • display 变量名:跟踪查看一个变量,每次停下来都显示它的值

  • undisplay:取消对先前设置的那些变量的跟踪

  • until X行号:跳至X行

  • breaktrace(或bt):查看各级函数调用及参数

  • info(i) locals:查看当前栈帧局部变量的值

  • quit:退出gdb

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/833976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Shell 编程规范与变量

目录 一.Shell 1.shell 的概念 2.Linux 中有哪些 Shell ? 二.Shell 脚本概述 1.Shell 脚本的概念 2.shell 脚本应用场景 3.shell 脚本的作用 三.Shell脚本的构成与执行 1.Shell脚本的构成 2.Shell脚本的执行 四.重定向与管道操作 1.交互式硬件设备 2.重…

论文分享[cvpr2018]Non-local Neural Networks非局部神经网络

论文 https://arxiv.org/abs/1711.07971 代码https://github.com/facebookresearch/video-nonlocal-net 非局部神经网络 motivation:受计算机视觉中经典的非局部均值方法[4]的启发,非局部操作将位置的响应计算为所有位置的特征的加权和。 非局部均值方法 NLM&#…

男士内裤什么牌子的好?男士内裤五大排名品牌推荐

夏天快到了,你是不是在为内裤不够舒适透气、质量不好而困扰呢?现在市面上的男士内裤品牌众多,而且还有各种材质的分类,让大家一时也不知道该选什么好。 那么最近我也是特别购置了近期热门的几个男士内裤品牌进行测评,今…

在线教育系统开发流程设计,如何选择教育类app?有哪些优势呢?

教育培训APP是为培训机构搭建的一个智能化、个性化、信息化的网络展示平台。在线教育春天真的来了吗?据调查,我国网民规模达8.02亿,普及率57.7%。其中,手机网民规模已达7.88亿,中国APP开发数量更是超过美国成为全球第一。如何选择…

(十六)Servlet教程——Servlet文件下载

Servlet文件下载 文件下载是将服务器上的资源下载到本地,可以通过两种方式来下载服务器上的资源。第一种是使用超链接来下载,第二种是通过代码来下载。 超链接下载 在HTML或者JSP页面中使用超链接时,可以实现页面之间的跳转,但是…

如何使用google.protobuf.Struct?

google.golang.org/protobuf/types/known/structpb 包提供了一种方式来创建和操作 google.protobuf.Struct 类型的数据。google.protobuf.Struct 是一种灵活的数据类型,可以表示任何结构化数据。 以下是如何使用 structpb 包的一些示例: 创建 Struct&a…

RK3568 学习笔记 : Linux emmc 内核启动 rootfs 根文件系统无法正常挂载问题的分析

问题描述 平台 : NanoPi-R5C 开发板 RK3568 平台。 手动编译的 Linux 内核,结果发现大概率 emmc 无法正常初始化,导致 rootfs 根文件系统无法正常挂载 Linux 内核版本: 6.1 Linux 内核代码位置: https://github.com…

Sql语法1

数据库语言大概可以分为四大类 1、DML:(Database Manipulation Language):insert,update,delete 2、DQL:(Database Query Language):select 3、DCL:(Database Control Langu…

第2章 WebServer进阶

2.1 使用多线程处理多用户请求 2.1.1 多线程Socket通信 在上一章的案例中,服务端显然只能处理一次浏览器请求,请求一次浏览器端就结束程序。如何解决这个问题呢?可以采用多线程Socket通信技术,解决多用户并发请求。 在多线程Sock…

从谚语:“一手交钱,一手交货来”谈谈什么是数据库事务

事务与交易 一手交钱,一手交货 一手交钱,一手交货,谚语,意思是指钱和货当场相交,互不拖欠。出自明朝施耐庵《水浒传》第二一回。 Transaction 意思 我们先来看一下来自于剑桥英-英词典的解释: transac…

matlab中interp2函数应用

interp2 函数在 MATLAB 中用于进行二维插值。当使用 nearest 选项时,它会执行最近邻插值,即对于给定的目标点,函数将选择网格中距离其最近的点的值作为该目标点的插值结果。 以下是 interp2 函数在 nearest 模式下的用法示例,以及…

Flask-HTTP请求、响应、上下文、进阶实验

本节主要目录如下: 一、请求响应循环 二、HTTP请求 2.1、请求报文 2.2、Request对象 2.3、在Flask中处理请求 2.4、请求钩子 三、HTTP响应 3.1、响应报文 3.2、在Flask中生成响应 3.3、响应格式 3.4、Cookie 3.5、session:安全的Cookie 四、…

企业车辆管理系统参考论文(论文 + 源码)

【免费】关于企业车辆管理系统.zip资源-CSDN文库https://download.csdn.net/download/JW_559/89282550 企业车辆管理系统 摘 要 随着经济的日益增长,车辆作为最重要的交通工具,在企事业单位中得以普及,单位的车辆数目已经远远不止简单的几辆,与此同时就产生了车辆资源的合理…

Codeforces Round 940 (Div. 2) and CodeCraft-23 D. A BIT of an Inequality

A BIT of an Inequality 题目描述 给你一个数组 a 1 , a 2 , … , a n a_1, a_2, \ldots, a_n a1​,a2​,…,an​ 。求这样的图元( x , y , z x, y, z x,y,z )的个数: 1 ≤ x ≤ y ≤ z ≤ n 1 \leq x \leq y \leq z \leq n 1≤x≤y≤z≤…

汽车灯罩一般都是用什么材质做的?汽车车灯的灯罩如果破损破裂破洞了要怎么修复?

汽车灯罩一般都是用什么材质做的? 汽车灯罩一般使用的主要材质是聚碳酸酯(PC)和丙烯酸酯(PMMA)这两种塑料。这两种材料具有良好的透明性、耐候性和耐冲击性,因此非常适合用于汽车灯罩的制造。 聚碳酸酯&am…

小程序支付的款项流转与到账时间

商家做小程序,最关心的是客户通过小程序下单支付的钱,是怎么样的流转状态以及最终到哪里。因此,本文将详细解析款项最终流向何处以及多久能够到账。 一、小程序支付的款项流向 当用户在小程序内完成支付后,款项并不会直接到达商…

5月8日学习记录

_[FBCTF2019]RCEService(preg_match函数的绕过) 涉及知识点:preg_match函数绕过,json的格式,正则回溯 打开环境,要求用json的格式输入 搜索学习一下json的语法规则 数组(Array)用方括…

Map-Reduce是个什么东东?

MapReduce是一种用于使用并行分布式算法在集群计算机上处理大型数据集的编程模型及其相关实现。这一概念首先由Google普及,并随后作为Apache Hadoop项目的一部分开源发布。 MapReduce的基本工作流程: 映射(Mapping):这是第一阶段&#xff0c…

制造版图大变革!逾10座晶圆厂蓄势待发 | 百能云芯

在全球半导体产业的激烈竞争和市场需求的复杂波动中,晶圆厂建设热潮正在美国兴起,这一波建设浪潮的核心动力之一,便是美国政府推出的《芯片与科学法案》所承诺的巨额补贴,旨在提升美国在全球半导体行业的竞争力。 当地时间4月25日…

嵌入式—模块代码(一)

🎬 秋野酱:《个人主页》 🔥 个人专栏:《Java专栏》《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 程序结构GPIO操作UART操作接收逻辑发送 以下模板代码均基于官方2023.07.17版本。 程序结构 #include "Config.h" #inc…