【linux】git和gdb调试工具

在linux下提交代码同步到gitee

1.创建一个新的仓库(演示步骤)

在这里插入图片描述

在这里插入图片描述

2.init

在这里插入图片描述
在这里插入图片描述
这两个步骤用于识别提交代码的身份,一个你的名字,一个你的邮箱
在这里插入图片描述

开启本地仓库
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
克隆本地仓库成功


在这里插入图片描述
我们将这个仓库拷到了111目录底下.

在这里插入图片描述
在这里插入图片描述
我们发现少了一个.gitignore,因为.gitignore是隐藏文件,所以使用ls -la查看
在这里插入图片描述

3.git log 指令

用于查看提交状态
在这里插入图片描述

上面可以看到提交人的信息,以及时间,以及提交备注


将上节课写的代码拷贝到当前目录下
在这里插入图片描述

在这里插入图片描述
此时还没有同步到gitee上去

4.git三板斧

1.git add .//将该目录的修改记录同步到本地仓库去
在这里插入图片描述
2.git commit -m+“提交备注”//正式将修改更新到本地仓库
在这里插入图片描述
根据.git更改时间发现仓库更新
在这里插入图片描述
3.git push//将本地仓库内容同步到gitee远端仓库

![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/71f7a70b77334b1f979462a1a0de17fc.png

在这里插入图片描述
在这里插入图片描述
git log 查看同步记录

在这里插入图片描述
然后我们在gitee上发现同步上了.


在windows下我们使用小乌龟上传代码到gitee远端仓库 ,我们发现会有很多.obj ,.exe文件 ,我们不需要这些,我们应该怎么办?

在这里插入图片描述
我们先新建3个文件 c.txt x.txt2 z.txt1 我们不要上传.txt文件,.txt2,.txt1上传
将这个后缀添加到.gitignore中就可以了

5. vim修改内容

在这里插入图片描述
在这里插入图片描述
添加不要上传的文件后缀
在这里插入图片描述
使用三板斧提交同步代码到远端
在这里插入图片描述
发现没有出现.txt后缀。测试成功


我们如何在本地删除一个文件,然后同步到远端呢?

6.git rm +文件名

我们假如要删除刚才上传的两个txt1,txt2
在这里插入图片描述

使用三板斧同步修改到远端
在这里插入图片描述
在这里插入图片描述
删除成功

演示完成,我们需要删除我们这个仓库
在这里插入图片描述

这里可以查看提交的记录,
然后删除我们这个仓库
在这里插入图片描述


gdb调试工具

debug版本为什么比release版本文件大

用户一般用的产品只需要使用,不用带调试信息,用户也不需要调试信息,使用release版本就行,而程序员需要看调试信息找错误,所以程序员使用的debug版本,debug版本比release大是因为携带调试信息

  1. 背景
    程序的发布方式有两种,debug模式和release模式
    Linux gcc/g++出来的二进制程序,默认是release模式
    要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

这里有一个问题?
for循环形式只是在c99下是允许的 ,所以要修改一下我的for循环模式,c89将变量定义写在外面
在这里插入图片描述

默认gcc 编译生成release版本
在这里插入图片描述

exe1为release版本下的
exe2为debug版本下的
在这里插入图片描述

明显在debug下生成的.exe文件大
使用readelf指令可以读取可执行文件的详细信息,并且通过管道(相当于把管道前处理后再干什么),grep指令将debug信息列举
在这里插入图片描述

我们发现exe1没有debug信息,exe2有debug信息


gdb指令

1.进入gdb

1.gdb+在debug下生成可执行文件的文件名

在这里插入图片描述

2.退出gdb

2.q
在这里插入图片描述

3.查看对应的.c文件对应行的上下文

3.list+文件名:行号/函数名
3.l+文件名:行号/函数名(简写)
在这里插入图片描述

当执行完一个指令后,按回车会自动执行最近的上一个指令
在这里插入图片描述

简写也可以
在这里插入图片描述

l+函数名
在这里插入图片描述

l 15 显示15行的上下文
在这里插入图片描述


接着我们对应着vs的调试理解gdb调试下的指令
我们将代码拷到vs上去

4.添加断点

在vs中添加断点

在光标停留那一行按F9或者鼠标在对应行点击出现红点
在这里插入图片描述

在gdb中添加断点

4.b+文件名:行号/函数名
4.b+ 行号/函数名(简写)
在这里插入图片描述

5.查看断点

在vs查看断点

直接看红圈出现的位置

在gdb中查看断点

5.info +b
5.i+b(简写)
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/ccab9c4fb5d4419eae69fbb3de51dec3.png

6.删除断点

在vs中删除断点

在打断点的行再次按一下F9或者用鼠标点击一下断点取消断点

在gdb中删除断点

6.d +断点编号
在这里插入图片描述

7.断点使能

在gdb中让断点关闭/打开,并非删除

7.disable +断点编号(断点关闭)
7.enable +断点编号(断点重启)
在这里插入图片描述

8.逐过程(不进入定义函数内部)

在vs中逐过程:F10
在gdb中的逐过程:
8.next
8.n(简写)

在这里插入图片描述
我们在主函数那打个断点,然后使用指令r让程序跑起来,遇到main函数处打的断点停下来,然后按n,开始逐过程,我们发现到了add函数不进函数内部,z直到程序结束.

9.逐语句(进入定义函数内部)

在vs中逐语句:按F11
在gdb逐语句:
9.step
9.s(简写)
在这里插入图片描述
同理,我们在主函数打断点,按r让程序跑起来,当到断点处,按s/step,我们发现可以进入add函数中

10.查看变量内容或者变量地址

在vs中查看变量内容/变量地址:

在这里插入图片描述
F11运行起来在监视里面添加变量/变量地址

在gbd中查看变量内容/变量地址:

10.print+变量名/变量地址
10.p+变量名/变量地址(简写)
在这里插入图片描述

11.持续显示变量/变量地址

在gdb中:
11.display+变量名/变量地址
11.d+变量名/变量地址
在这里插入图片描述

12.取消持续显示的变量/变量地址

在gdb中:
12.undisplay+ 要取消持续显示的变量的编号
在这里插入图片描述
在这里插入图片描述

13.运行到下一断点处

在gdb中:
13.continue
13.c
在这里插入图片描述
这个是我们的程序
我们分别在16行,18行打断点
在这里插入图片描述
在16行的第一个断点停下,按continue/c进入下一个断点处.

14.运行结束所在函数,就停下来

在gdb中:
14.finish
在这里插入图片描述

15.跳转到指定行,中间代码都是运行过的

在gdb中:
15.until
在这里插入图片描述
16行直接到18行,并且中间都被执行.

17.修改变量的值

在gdb中:
17.set var +变量名=(修改后的值)
在这里插入图片描述

18.查看栈帧创建情况

在gdb中:
18.bt
在这里插入图片描述
在add函数中,我们发现add函数的栈帧在主函数的上面压着,当finish完add后,只剩下main的栈帧.

总结
list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
list/l 函数名:列出某个函数的源代码。
r或run:运行程序。
n 或 next:单条执行。
s或step:进入函数调用
break(b) 行号:在某一行设置断点
break 函数名:在某个函数开头设置断点
info break :查看断点信息。
finish:执行到当前函数返回,然后挺下来等待命令
print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
p 变量:打印变量值。
set var:修改变量的值
continue(或c):从当前位置开始连续而非单步执行程序
run(或r):从开始连续而非单步执行程序
delete breakpoints:删除所有断点
delete breakpoints n:删除序号为n的断点
disable breakpoints:禁用断点
enable breakpoints:启用断点
info(或i) breakpoints:参看当前设置了哪些断点
display 变量名:跟踪查看一个变量,每次停下来都显示它的值
undisplay:取消对先前设置的那些变量的跟踪
until X行号:跳至X行
breaktrace(或bt):查看各级函数调用及参数
quit:退出gdb

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

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

相关文章

Fink CDC数据同步(五)Kafka数据同步Hive

6、Kafka同步到Hive 6.1 建映射表 通过flink sql client 建Kafka topic的映射表 CREATE TABLE kafka_user_topic(id int,name string,birth string,gender string ) WITH (connector kafka,topic flink-cdc-user,properties.bootstrap.servers 192.168.0.4:6668…

微信小程序使用ucharts折线图,有负数显示0刻度线

当数据有负数和正数的时候默认不会显示0刻度线,不方便看出正负对比 实现思路:显示的刻度线是根据数据的最大值和最小值自动分配到刻度线上面,把最大值和最小值设置为一样,然后平均分配给五个刻度线中间的刻度线就会为0就实现了显…

uniapp /微信小程序 使用map组件实现手绘地图方案

获取地图范围 点图拾取坐标-地图开放平台|腾讯位置服务 获取需要手绘地图左下角和右上角GPS坐标 以北京故宫为例&#xff1a; 截取需要手绘地图进行手绘地图制作 ​​​​​​​​​​​​​​ 素材处理 由于地图素材文件比较大&#xff0c;小程序又限制包大小<2M,无…

13.从桥接模式细品人生的几座桥

“物理学不存在了&#xff0c;今后也不会存在。”——《三体》 在《三体》中&#xff0c;有这样一个桥段&#xff0c;顶级的物理学家杨冬在三体文明超级计算机“智子”的干扰和误导下&#xff0c;得出了物理实验的结果在实验之前就会被某种力量确定的结论&#xff0c;导致自己…

PyTorch 2.2 中文官方教程(九)

在生产环境中部署 PyTorch 模型 通过 Flask 在 Python 中部署 PyTorch 的 REST API 原文&#xff1a;pytorch.org/tutorials/intermediate/flask_rest_api_tutorial.html 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 注意 点击这里下载完整的示例代码 作者&#…

Windows鼠标右键菜单闪一下就没了?说不定是这个搞的鬼!

前言 这几天接到有些小伙伴反馈&#xff1a;Windows的右键菜单闪一下就没了。 本来是要按鼠标右键进行界面刷新或者新建文件夹等操作的&#xff0c;结果闪一下就没有了&#xff0c;感觉这个系统就好像中了病毒了一样。 相信很多小伙伴应该也遇到过同样的情况&#xff0c;但具…

BUGKU-WEB Simple_SSTI_1

02 Simple_SSTI_1 题目描述 解题思路 进入场景后&#xff0c;显示&#xff1a; You need pass in a parameter named flag。ctrlu 查看源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Simpl…

ElementUI 组件Layout布局 el-row和el-col 简介

Layout布局 el-row属性简介 el-row 组件 提供 gutter 属性来指定每一栏之间的间隔&#xff0c;默认间隔为 0。 提醒&#xff1a; el-row :gutter需要与el-col :span 一起使用才能生效 el-col属性简介 el-col的span属性 默认值为24&#xff0c;表示每一行共24份&#xff0c;:s…

030 可变参数

可变参数定义 public static void main(String[] args) {// 多参数方式传递System.out.println(max(1,3,5,3,6,1,2));// 数组方式传递System.out.println(max(new int[]{1,3,5,3,6,1,2})); }static int max(int... nums){int max Integer.MIN_VALUE;for (int num : nums) {if(…

Mysql架构系列——生产常用的高可用部署模式介绍

模式 高可用模式 Galera Cluster是由Codership开发的MySQL多主集群&#xff0c;包含在MariaDB中&#xff0c;同时支持Percona xtradb、MySQL&#xff0c;是一个易于使用的高可用解决方案&#xff0c;在数据完整性、可扩展性及高性能方面都有可接受的表现。 将会基于Galera C…

三层交换组网实验(华为)

思科设备参考&#xff1a;三层交换组网实验&#xff08;思科&#xff09; 一&#xff0c;技术简介 三层交换技术的出现&#xff0c;解决子网必须依赖路由器进行管理的问题&#xff0c;解决传统路由器低速、复杂所造成的网络瓶颈问题。一个具有三层交换功能的设备可简单理解为…

2.4日总结

第一题&#xff1a;选数 题解&#xff1a;思路还是很简单的&#xff0c;只需要想清楚dfs里的函数都是什么就可以了&#xff0c;还有一个简单的判断素数的函数&#xff0c;这题真没啥难度&#xff0c;就是属于基础题吧&#xff0c;请看AC代码 #include <stdio.h> #includ…

redis的缓存击穿和缓存雪崩和缓存穿透问题解决方法

Redis的缓存击穿&#xff1a; 热点的key&#xff0c;在不停的扛着大并发&#xff0c;当这个key失效时&#xff0c;一瞬间大量的请求冲到持久层的数据库中&#xff0c;就像在一堵墙上某个点凿开了一个洞&#xff01; 解决方法&#xff1a; 1.热点key永不过期&#xff1a; 统计访…

Facebook的数字合作愿景:创新与未来发展

随着科技的飞速发展&#xff0c;Facebook一直处于数字创新的前沿&#xff0c;致力于构建开放、智能、社交的数字社交体验。本文将深入探讨Facebook的数字合作愿景&#xff0c;探索其在创新与未来发展方面的雄心壮志。 引言 在当今数字化时代&#xff0c;社交媒体不仅是人们沟通…

Qt案例 在对QGraphicsView视图修改和撤销修改图元操作时,使用命令模式实现。

当项目中有QGraphicsView视图直接修改图元的功能时&#xff0c;常会有CtriZ和CtrlY这种执行与撤销图元修改的功能&#xff0c;以便于在修改图元后能够进行一个还原/执行操作&#xff0c;此时就适合使用命令模式设计来实现这个功能。 以下示例在WINDOWS系统&#xff0c;Qt Creat…

Stable Diffusion 模型下载:EnvyHyperrealXL01

模型介绍 一个基于 EnvyHyperdrive 和 NewReality 的超写实模型&#xff0c;使生成的照片级真实感模型在主题和视觉上与我的其他模型相似&#xff0c;除了&#xff0c;你知道&#xff0c;照片级真实感。 &#x1f603; 条目内容类型大模型基础模型SDXL 1.0来源CIVITAI作者_En…

SpinrgBoot-Mybatis基础

​ JDBCMyBatis概述MyBatis基础应用MyBatis动态标签 一、JDBC( Java DataBase Connectivity )&#xff1a;Java连接数据库的解决方案 概念&#xff1a;JDBC就是Java后端操作数据库的解决方案&#xff0c;操作数据的指令应该来自于前端&#xff0c;前端把数据提交到后端Java代…

CHS_09.2.3.6_2+多生产者-多消费者

CHS_09.2.3.6_2多生产者-多消费者 问题描述问题分析如何实现如何实现假如我们把盘子的容量设为二知识回顾 在这个小节中 我们会学习一个多生产者 多消费者的这样一个问题模型 问题描述 先来看一下问题的描述 假设桌子上面有一个盘子 每次只能向这个盘子里放一个水果 有四个人…

搜索专项---Flood Fill

文章目录 池塘计数城堡问题山峰与山谷 一、池塘计数OJ链接 1.BFS做法 #include <bits/stdc.h>#define x first #define y secondtypedef std::pair<int,int> PII;constexpr int N1010;int n,m; char g[N][N]; bool st[N][N];//用来表示已经记录过的 std::queue&…

3D力导向树插件-3d-force-graph学习002

一、实现效果&#xff1a;节点文字同时展示 节点显示不同颜色节点盒label文字并存节点上添加点击事件 二、利用插件&#xff1a;CSS2DRenderer 提示&#xff1a;以下引入文件均可在安装完3d-force-graph的安装包里找到 三、关键代码 提示&#xff1a;模拟数据可按如下格式填…