Linux系统编程学习 NO.9——git、gdb

前言

本篇文章简单介绍了Linux操作系统中两个实用的开发工具git版本控制器和gdb调试器。

git

什么是git?

git是一款开源的分布式版本控制软件。它不仅具有网络功能,还是服务端与客户端一体的软件。它可以高效的处理程序项目中的版本管理。它是Linux内核的设计者Linus Torvalds为了帮助管理Linux内核开发和维护而开发的一个开放源码的版本控制软件。

如何使用git

这里我们推荐使用国内基于git,为用户提供远端代码仓库服务的网站gitee。然后手把手教你管理自己对应的本地仓库以及远端仓库。

第一步,你得注册并登录你的gitee网站的账户,在你的网页右上角有一个“+”号,点击里面的新建仓库。
在这里插入图片描述
第二步,创建远端仓库
在这里插入图片描述
第三步,将远端仓库克隆到本地仓库。首先现将远端仓库的链接拷贝下来。
在这里插入图片描述
然后打开本地环境
在终端bash命令行输入以下指令
在这里插入图片描述

git --version

如果显示出了对应的版本,则请看下一步。若显示未找到指令,则表示git还未安装。所以需要安装git。在bash命令行中输入下面指令安装git

sudo yum install -y git

当你看到本行是文字时,相信你的git也在你的本地环境已经安装,下面我们将远端仓库克隆到本地环境里,形成本地仓库。如果你是第一次安装git也会要求你提供你的身份信息,这是为了对代码进行溯源。具体提交身份信息的指令简单提供一下demo版本的。

git config --global user.email "你的email"
git config --global user.name "你的姓名"
git clone 你的远端仓库URL

在这里插入图片描述
第四步,提交本地仓库代码到远端仓库。需要用到三板斧进行相应的提交。

git add .
git commit -m "提交内容描述" 
git push

git add .命令是将你当前的目录下的文件提交到暂存区中。git commit -m 命令是将暂存区的文件提交到本地仓库中,并要求写上你在本次提交中做了什么?git push命令是将当前本地仓库的内容同步到远端仓库中。在初学时不建议通过配置文件省略用户名密码确认。

在这里插入图片描述
在这里插入图片描述

第五步,远端仓库对于本地仓库的管理。当我们需要删除或者调整代码仓库的结构时,需要在远端仓库进行相应的调整操作后,然后在本地环境中将远端仓库的操作后内容拷贝到本地仓库中。需要用到同步远端仓库内容与本地仓库内容的指令。

git pull

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以通过下面指令查看当前日志信息

git log

在这里插入图片描述
可以使用下面指令查看当前git的状态

git status

在这里插入图片描述

gdb

什么是gdb?

gdb是一款开源的源代码调试器。用于Linux环境下,C、C++、Python等编程语言的错误调试。gdb只能在debug版本下起作用,release版本是无法调试的。因为release版本对应目标的是用户,用户可不会去调试。

gdb的使用

在这里插入图片描述
这里可以看到gcc环境下默认是以release版本发布程序,如果我希望我的程序是以debug版本发布呢? 这就要使用gcc的-g选项。
在这里插入图片描述
这里可以看到debug版本程序的容量是要略大于release版本的。因为debug程序内部携带了调试信息。下面简单介绍两个gdb指令,l和q。l表示默认显示当前程序的前10代码,可以按回车换行符继续输出代码,也可以指定对应的行号显示代码。q表示退出gdb。
在这里插入图片描述
在这里插入图片描述

下面在正式介绍调试前先给大家看一下样例的源文件的代码
在这里插入图片描述
在gdb中输入r表示在gdb直接跑完当前的源代码。

在这里插入图片描述
我相信大家如果使用vs系列类似的图形化界面调试器,对断点一定不会陌生。那么在gdb下不和定义断点,如何查看断点,如何移除断点呢?且看下面的样例。
在gdb中,b + 行号 = 将对应的行号添加为断点。
在这里插入图片描述
我们平时用的图形化界面的集成开发环境中,断点是在行号的左边展示出来的。而gdb并不会在代码内容中显示断点位置。它需要通过一个指令来查看当前调试器中所有的断点。

info b

在这里插入图片描述
在gdb中跑info b指令后,当前程序的所有断点以及它们的相关信息就都能展示给用户了。那如果我要删除断点呢?这就需要用 d + 断点编号进行断点的删除。
在这里插入图片描述
在调试期间退出gdb,你上一次调试的内容数据将会被清空。
在这里插入图片描述
s表示逐过程执行,n表示逐语句执行。
在这里插入图片描述
until n行,表示直接跳转到第n行。display 变量名可以输出该变量的内容。
在这里插入图片描述

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

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

相关文章

深入理解Linux网络笔记(六):深度理解TCP连接建立过程

本文为《深入理解Linux网络》学习笔记,使用的Linux源码版本是3.10,网卡驱动默认采用的都是Intel的igb网卡驱动 Linux源码在线阅读:https://elixir.bootlin.com/linux/v3.10/source 5、深度理解TCP连接建立过程 1)、深入理解liste…

python查找算法_顺序查找

顺序查找(Sequential Search)是一种简单直观的搜索算法,用于在无序数组中查找特定元素。它的基本思想是逐个遍历数组中的元素,直到找到目标元素或遍历完整个数组。本文将介绍顺序查找的基本原理,并通过Python代码进行详…

网络爬虫|Selenium——find_element_by_xpath()的几种方法

Xpath (XML Path Language),是W3C定义的用来在XML文档中选择节点的语言 一、从根目录/开始 有点像Linux的文件查看,/代表根目录,一级一级的查找,直接子节点,相当于css_selector中的>号 /html/body/div/p 二、根据…

LTspice学习笔记

参考博文 LTspice 软件仿真入门–LLC开环仿真练习LTspice:模拟变压器的简单步骤SPICE 语言基本语法和规则

hashMap索引原理

平日里面经常使用map这种数据结构,令人称奇的是他的访问速度为什么那么快?为什么可以通过key以接近O(1)的速度查找? 一、基础数据结构特点分析 1.1数组 查找的时间复杂度为O(1) 插入时间复杂度为O(n) 1.2链表 查找的时间复杂度为O(n) 插…

【Rust】6、练习:自己实现 ls

文章目录 一、CLI Utilities Rust 学完,想找些练手的项目,怎么办?可参考这个文章,列出的 15 个项目。 一、CLI Utilities github 参考 lsd 项目地址 cargo.toml [dependencies] clap "2"main.rs extern crate cl…

【剑指offer|图解|链表】链表的中间结点 + 链表中倒数第k个结点

🌈个人主页:聆风吟 🔥系列专栏:数据结构、算法模板 🔖少年有梦不应止于心动,更要付诸行动。 文章目录 📋前言一. ⛳️链表的中间结点二. ⛳️链表中倒数第k个结点📝结语 &#x1f4c…

CUDA核函数,如何设置grid和block即不超过大小又能够遍历整个volume

此问题答案来自于openAI 1、Grid 大小: Grid 的大小由 dim3 grid 定义,其三个分量分别表示在 x、y、z 方向上的 Grid 数量。Grid 的大小不应该超过 GPU 的最大 Grid 大小。cudaDeviceGetAttribute获取限制。 int maxGridSizeX, maxGridSizeY, maxGridS…

最全Redis面试题整理

什么是Redis? Redis(Remote Dictionary Server)是一个开源的内存中数据结构存储系统,它可以用作数据库、缓存和消息中间件。Redis支持多种数据结构,包括字符串、哈希表、列表、集合、有序集合等,这使得它非…

如何为视频添加旁白,有哪些操作技巧?

简而言之,画外音是视频的旁白,在教程视频中添加旁白可以使视频更加有趣,并向观看者传达更多的信息。 如果您是视频制作人,想要为视频添加旁白,可阅读以下文章,可以帮助您更好地进行配音。 制作配音的技巧…

2216. 美化数组的最少删除数 --力扣 --JAVA

题目 给你一个下标从 0 开始的整数数组 nums ,如果满足下述条件,则认为数组 nums 是一个 美丽数组 : nums.length 为偶数对所有满足 i % 2 0 的下标 i ,nums[i] ! nums[i 1] 均成立 注意,空数组同样认为是美丽数组。…

www.testfire.nets渗透测试报告

www.testfire.nets渗透测试报告 一、测试综述 1.1.测试⽬的 通过实施针对性的渗透测试,发现testfire.net⽹站的安全漏洞,锻炼自己的渗透水平 1.2.测试范围 域名:www.testfire.net IP:65.61.137.117 测试时间: 2023年11月…

pcl库问题遇到总结

1,memory.h触发断点 方法:VS:通过项目属性->C/C->代码生成->启用增强指令集->选择AVX 2,error C3083: “this_thread”标红 boost::this_thread::sleep(boost::posix_time::microseconds(100000)) 修改为 std::th…

AC修炼计划(AtCoder Beginner Contest 329)

传送门:Sky Inc, Programming Contest 2023(AtCoder Beginner Contest 329) - AtCoder A,B,C,D 这四道题比较简单,就不多叙述。 E - Stamp 这题是一道比较…

LeetCode5:最长回文子串

参考链接: 🔗:【5. 最长回文子串 Longest Palindromic Substring【LeetCode 力扣官方题解】-哔哩哔哩】 具体代码 class Solution {public String longestPalindrome(String s) {int i0,j,k0,ns.length(),max_len1,begin0;char[] ch s.toCharArray();boolean[][] …

opencv-图像平滑

高斯平滑 高斯平滑即采用高斯卷积核对图像矩阵进行卷积操作。高斯卷积核是一个近似服从高斯分布的矩阵,随着距离中心点的距离增加,其值变小。这样进行平滑处理时,图像矩阵中锚点处像素值权重大,边缘处像素值权重小。 import cv2 …

Sentinel概述

Sentinel 框架通常指的是用于服务治理和流量控制的开源框架,特别是在微服务架构中。在不同的上下文中,可能有不同的 Sentinel 框架,但最常见的是 Alibaba 开源的 Sentinel 框架。 Alibaba Sentinel 框架是一个用于流量控制、熔断降级和系统负…

linux 下打印堆栈信息 jstack pstack gstack 有啥区别?分别的使用场景是啥?

jstack、pstack和gstack是在Linux系统下用于打印堆栈信息的工具,它们的使用场景和功能略有不同。 jstack:jstack是Java虚拟机自带的工具,用于打印Java进程的堆栈信息。它可以显示Java线程的状态、锁信息、线程堆栈等。jstack主要用于诊断Java…

【封装UI组件库系列】全局样式的定义与重置

封装UI组件库系列第二篇样式​​​​​​​ ​​​​​​🌟前言 🌟定义全局样式 生成主题色和不同亮度的颜色 ​编辑 中性色及其他变量 🌟样式重置 🌟总结 ​​​​​​​​​​​​​​🌟前言 在前端开发中&…

在c#中如何将多个点位(Point)转换为多边形(Polygon)并装换为shp图层

👻如图,我现在有一组经纬度点位Point,接下来我们将他装换为多边形Polygon格式 👻使用QGIS > 图层 > 添加图层 > 添加分隔文本图层 > 打开这个csv点位文件 👻打开后如左下图,csv文件中的四个点位…