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.mfbz.cn/a/597770.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

记录一下3月底到4月的前端开发工程师面经

文章会持续更新 1.https 原理(加密 证书) 客户端使用https的url访问web服务器,要求与服务器建立ssl连接web服务器收到客户端请求后,会将网站的证书(包含公钥)传送一份给客户端客户端收到网站证书后会检查证…

学术咸鱼入门指南(2)

巧用思维导图阅读文献 化整为零:读文献,从拆分文章的结构开始 大家在初步接触自己学科的论文时,要了解清楚基本的范式,日后读起来就比较顺了。 科研论文的第一部分,是文章的标题,摘要和关键词&#xff0…

HNU-人工智能-作业1

人工智能-作业1 计科210x 甘晴void 第1题 考虑一个实时的在线电话翻译系统,该系统实现英语与日语之间的实时在线翻译,讨论该系统的性能度量,环境,执行器,感知器,并对该环境的属性进行分析。(10…

革新品质检测,质构科技重塑肉类行业新篇章

革新品质检测,质构科技重塑肉类行业新篇章 在现代社会,消费者对食品安全和品质的要求日益提升,特别是在肉类行业。为了满足这一市场需求,质构科技凭借其精准、高效的优势,正逐渐成为肉类品质检测的新星。今天&#xf…

网络安全的未来:挑战、策略与创新

引言: 在数字化时代,网络安全已成为个人和企业不可忽视的议题。随着网络攻击的日益频繁和复杂化,如何有效保护数据和隐私成为了一个全球性的挑战。 一、网络安全的现状与挑战 网络安全面临的挑战多种多样,包括但不限于恶意软件、…

iPhone查看本机号码只需要这3招,不再为号码忘记犯愁!

在日常生活中,我们经常需要使用手机号码进行各种通讯活动,但有时候会忘记自己的手机号码,让人感到非常尴尬。不过,如果您是iPhone用户,那么您可以放心了!因为在iphone查看本机号码只需要简单的几个步骤&…

ShardingSphere 5.x 系列【27】 数据分片原理之 SQL 改写

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 概述2. 正确性改写2.1 标识符改写2.1.1 表名称2.1.2 索引名称2.1.3 Schem…

618好物节不知道买什么?快收下这份好物推荐指南!

随着618好物节的临近,你是否在为选择什么产品而犹豫不决?不用担忧,我精心准备了一份购物指南,旨在帮助你发现那些性价比高、口碑爆棚的商品。无论是科技新品还是生活小物件,这份指南都能帮你快速定位到那些值得投资的好…

若依前后端分离部署nginx

1、v.sj 2、生产环境修改 3、退出登录修改 4、路由改为hash模式 5、nginx配置 location /gldhtml/ {alias D:/java/tool/nginx-1.19.6/project/jxal/html/; } location /jxal/ {proxy_pass http://localhost:8081/; }

软信天成:CDMP数据管理专业人员认证9大要点【干货篇】

软信天成在上期文章中为大家分享了CDMP认证的基础内容。 上期文章:软信天成:CDMP数据管理专业人员认证详细介绍(基础篇)-CSDN博客 为方便诸位报考,软信根据考过CDMP的小伙伴经验分享,帮大家梳理了详细的考…

使用Beego创建API项目并自动化文档

最近需要使用Go写一个Web API项目,可以使用Beego与Gin来写此类项目,还是非常方便的,这里就介绍一下使用Beego来创建的Web API项目并自动化文档的方法。 使用Gin创建API项目并自动化文档参见:使用Gin编写Web API项目并自动化文档 …

软考 系统架构设计师系列知识点之软件可靠性基础知识(11)

接前一篇文章:软考 系统架构设计师系列知识点之软件可靠性基础知识(10) 所属章节: 第9章. 软件可靠性基础知识 第2节 软件可靠性建模 9.2.3 软件可靠性模型模型分类 一个有效的软件可靠性模型应尽可能地将前文所述的因素在软件可…

电感啸叫如何处理

一.电感啸叫现象 电感啸叫是指在20Hz~20kHz的电流激励频率下,电感会发出人耳所能听见的吱吱声。周期性电流经过电感线圈产生交变磁场,电感现象在交变磁场作用下产生振动而发出声音,这种周期性频率如果落在人耳听觉范围内&#xf…

syncGradle项目时报错Unknown Kotlin JVM target: 22

解决方案1 定位到build.gradle.kts的出问题行,将其注释掉然后把sourceCompatibility行也注释掉重新sync. 这样会自动使用默认兼容的版本 你也可以根据文档手动解决兼容问题2 Configure a Gradle project | Kotlin Documentation (kotlinlang.org) ↩︎ Compatibil…

MySQL动态列转行

介绍​​ 在实际的数据库查询中,有时候我们需要将表中的动态列(即列数不固定)转换为行,以便更好地进行数据分析和展示。在MySQL中,可以通过使用一些技巧和函数来实现动态列转行的功能。本文将介绍怎么实现MySQL动态列…

Babylon.js 7.0开发入门教程

Babylon.js 是一个功能强大的开源 3D 引擎,能够使用 JavaScript 渲染交互式 3D 和 2D 图形。它是为 Web 甚至 VR 创建游戏、演示、可视化和其他 3D 应用程序的绝佳选择。Babylon.js最新版本是7.0。 Babylon.js 是免费、开源和跨平台的,是 Unity 和 Unre…

超实用|新能源汽车充电小程序开发,一键充电很简单!

随着城市化的加速,新能源汽车用户越来越多。由于电池容量和充电时间的限制,新能源汽车用户通常需要在城市各处寻找充电站,充电过程不仅需要耗费时间,而且对于新能源汽车用户而言,充电站的位置分布是否合理、充电设施的…

当下大模型的趋势以及如何让学习大模型?

当下大模型的趋势 近年来,随着计算能力的提升、数据量的增加以及算法的进步,大模型在人工智能领域展现出了显著的发展趋势。以下是截至2024,大模型发展的一些关键趋势: 参数规模持续增长:从OpenAI的GPT-3的1750亿参数…

如何使用 iOS系统恢复软件修复 iPhone 问题

苹果公司向世界推出了他们可以拥有的最智能的手机。但即使是 iPhone 也无法避免智能手机常见的损坏和问题。您将熟悉最常见的问题。屏幕黑屏或卡在 Apple 徽标上;冻结或卡在恢复模式的 iPhone。但这样的问题不胜枚举,每天都有 iOS 用户在他们的设备中遇到…

第八篇:深入探索操作系统架构:从基础到前沿

深入探索操作系统架构:从基础到前沿 1 引言 在当今这个高速发展的数字时代,操作系统无疑是计算机科学领域的基石之一。它不仅是计算机硬件与最终用户之间的桥梁,更是实现高效计算和资源管理的关键。操作系统的架构,即其内部结构和…
最新文章