当前位置: 首页 > news >正文

【Linux】——git和gdb的简单使用技巧

目录

1.\r&&\n

2.缓冲区

3.做一个Linux的小程序——进度条

1.makefile代码:

2.proc.h代码

3.proc.c代码

4.main.c代码

4.git(上传做好的小程序)

5.Linux调试器-gdb使用


1.\r&&\n

在Linux中,可以将\r看成将光标移动到光标所在行的最左侧(回车)

\n看成换行,是换到下一行

2.缓冲区

凡是向显示器打印的所有内容,都是字符

3.做一个Linux的小程序——进度条

1.makefile代码:

myprocess:main.c proc.cgcc -o myprocess main.c proc.c
.PHONY:clean
clean:rm -f myprocess

2.proc.h代码

#pragma once#include <stdio.h>extern void process();

3.proc.c代码

#include "proc.h"
#include <string.h>
#include <unistd.h>#define SIZE 102
#define STYLE '='
#define ARR '>'// "|/-\\"
void process()
{const char *lable = "|/-\\";char bar[SIZE];memset(bar, '\0', sizeof(bar));int i = 0;while( i <= 100 ){printf("[\033[42;32;31m%-100s\033[0m][%d%%][%c]\r", bar, i, lable[i%4]);fflush(stdout);//刷新显示器bar[i++] = STYLE;if(i != 100) bar[i] = ARR;usleep(100000);}printf("\n");
}

4.main.c代码

#include "proc.h"int main()
{process();return 0;
}

4.git(上传做好的小程序)

git的使用流程

1.git clone +gitee的仓库http地址——将远端的git仓库克隆到本地的Linux中

2.cp “想要上传的代码”  本地的gitee仓库 ——将本地的想要上传的代码复制到本地的gitee仓库里面

3.git add (-A). ——将本地的gitee仓库add(.代表的是本地的仓库)

3.git commit -m “xxxxxx”——m后面填写的是本次上传代码的备注信息

4.git push——推送到远端的gitee仓库里面

5.Linux调试器-gdb使用

gcc和g++形成的可执行程序是release版本的,不是debug版本的

加上-g选项,gcc和g++会以debug版本进行编译程序,生成的可执行程序是debug版本的,这样才能用gdb调试

gdb主要掌握的是单进程调试功能,也就是在vs2019下怎么调试,就应该明白在gdb下如何调试

gdb使用流程

1.gdb “可执行程序”——用gdb打开可执行程序(debug版本)

2.l(list) 0——从第0行开始看代码,后续输入l+回车(不断回车),代码会自动往下翻滚(显示对应的代码)

3.r(run)——运行程序

4.b 行号——在某一行打断点

5.info b——查看断点(重点查看断点的首尾信息)

6.r——运行程序,此时程序在断点处停下

7.info b 此时可以发现断点已经被命中一次了

8.d 断点编号——删除断点

9.info b——此时已经没有断点了

10.r——运行程序,此时会询问你是否要重新开始调试

11.disable breakpoint 断点编号——禁用断点(将断点使能信号暂时关闭)

12.enable breakpoint 断点编号——开启被禁用的断点(与11条是一对)

13.逐语句(进入函数,一条条的跑完代码)逐过程(以函数为单位,但是不进入函数,跑完代码)调试方法:

1.n:逐过程

2.s:逐语句

3.p 变量——打印变量的值

4.display 变量名——常显示变量(可以是内置类型,也可以是结构体等自定义类型)的值(类似与vs2019的监视)

5.undisplay 变量编号——取消看常显示变量的值

6.until X行号:运行到第X行停下来

PS:

所有的调试器只是一个可以找出问题问题的工具,不能帮我们解决问题代码,真正能解决问题代码的只有我们自己。

所有查看代码内容的指令,并不影响我们调试的指令,比如:有的时候代码太多了,看不过来,我们用l去看自己想看的代码段,这种查看内容的l指令并不影响我们调试的位置。

14.finish——进入一个函数后,按下finish,就会只执行完该函数后,停下来 

15.c(continue):从一个断点处,直接运行到下一个断点处

常用的gdb调试按键

进入调试:gdb binFile

退出: ctrl + d 或 quit

调试命令:

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

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

r或run:运行程序。

n 或 next:单条执行(逐过程执行)。

s或step:进入函数调用(逐语句执行)

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

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

info break :查看断点信息。

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

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

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):查看各级函数调用及参数

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

quit:退出gdb

相关文章:

【Linux】——git和gdb的简单使用技巧

目录 1.\r&&\n 2.缓冲区 3.做一个Linux的小程序——进度条 1.makefile代码&#xff1a; 2.proc.h代码 3.proc.c代码 4.main.c代码 4.git&#xff08;上传做好的小程序&#xff09; 5.Linux调试器-gdb使用 1.\r&&\n 在Linux中&#xff0c;可以将\r看成…...

Fiddler的简单使用

目录 1.断点应用 2.网络限速测试 2.1.为什么需要弱网测试 2.2.Fiddler弱网测试配置 1.断点应用 通过断点功能&#xff0c;可以在测试时方便的篡改request&#xff0c;response以达到测试的目的&#xff0c;如果&#xff1a;在请求头中的参数修改成错误的&#xff0c;或在响应…...

MySql 事务

概述 事务 是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 注意&#xff1a; 默认MySQL的事务是自动提交的&#xff0c;也就是…...

微信社区小程序/h5/圈子论坛贴吧交友/博客/社交/陌生人社交/宠物/话题/私域/同城交友

内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍 小程序/app/H5多端圈子社区论坛系统,交友/博客/社交/陌生人社交,即时聊天,私域话题,社区论坛圈子,信息引流小程序源码,广场/微校园/微小区/微同城/ 圈子论坛社区系统&#xff0c;含完整…...

Python os和sys模块

一、os模块 os 模块是 Python中的一个内置模块&#xff0c;也是 Python中整理文件和目录最为常用的模块。 该模块提供了非常丰富的方法用来处理文件和目录。比如&#xff1a;显示当前目录下所有文件/删除某个文件/获取文件大小 1、获取当前的工作路径 在 Python 中&#xff0…...

JS中数组如何去重(ES6新增的Set集合类型)+经典two sum面试题

现在有这么一个重复数组&#xff1a;const arr [a,a,b,a,b,c]只推荐简单高效的方法&#xff0c;复杂繁琐的方法不做推荐方法一&#xff1a;const res [...new Set(arr)]Set类型是什么呢&#xff1f;Set 是ES6新增的一种新集合类型。具体知识点可以看下面附录&#xff1a;根据…...

HDLC简介及相应hdlc实训

HDLC简介 HDLC 协议 高级数据链路控制&#xff08;HDLC&#xff0c;High-level Data Link Control&#xff09;是一种面向比特的链路层协议&#xff0c; 其最大特点是对任何一种比特流&#xff0c;均可以实现透明的传输。HDLC协议具有以下优点。 透明传输&#xff1a;HDLC不…...

公司技术团队为什么选择使用 YApi 作为 Api 管理平台?

在 2021 年 12 月份的时候我就推荐过一款软件程序员软件推荐&#xff1a;Apifox&#xff0c;当时体验了一下里面的功能确实很实用&#xff0c;但是当时公司有一套自己的 API 管理方案&#xff0c;所有 Apifox 暂时就没在内部使用。 直到最近要使用其他的 API 管理方案的时候才…...

ts知识点整理

1、ts 中的 any 和 unknown 有什么区别&#xff1f; any 和 unknown 都是顶级类型&#xff0c;但是 unknown 更加严格&#xff0c;不像 any 那样不做类型检查&#xff0c;反而 unknown 因为未知性质&#xff0c;不允许访问属性&#xff0c;不允许赋值给其他有明确类型的变量。…...

技术分享 | OceanBase 数据处理之控制文件

作者&#xff1a;杨文 DBA&#xff0c;负责客户项目的需求与维护&#xff0c;会点数据库&#xff0c;不限于MySQL、Redis、Cassandra、GreenPlum、ClickHouse、Elastic、TDSQL等等。 本文来源&#xff1a;原创投稿 *爱可生开源社区出品&#xff0c;原创内容未经授权不得随意使用…...

TCP的三次握手、四次挥手

文章目录前言一、一些重要字段的含义二、TCP总括图三、三次握手详细过程1.第一次握手2.第二次握手3.第三次握手三次握手小结4.为什么必须要进行三次握手&#xff0c;两次或四次就不行四、四次挥手1.第一次挥手2.第二次挥手3.第三次挥手4.第四次挥手四次挥手简述前言 一个TCP的…...

C++---特殊类的设计

文章目录前言一、请设计一个类,不能被拷贝二、请设计一个类,只能在堆上创建对象三、请设计一个类,只能在栈上创建对象四、请设计一个类,不能被继承五、请设计一个类&#xff0c;只能创建一个对象(单例模式)总结前言 正文开始! 一、请设计一个类,不能被拷贝 拷贝只会发生在两个…...

buu [WUSTCTF2020]dp_leaking_1s_very_d@angerous 1

题目描述&#xff1a; e 65537 n 1568083435985787749573756968151889806821667406093028310996964920682463371987925108988184962391663390152073051021014316342831685444929845865667999964711502523821441482572367072472675061656708775063702531276953141639870840764…...

基于SVPWM改进的永磁同步电机直接转矩控制二更

导读&#xff1a;本期对基于SVPWM的永磁同步电机直接转矩控制进行全面的分析和仿真搭建。之后与传统的DTC进行比较&#xff0c;凸显基于SVPWM改进的DTC方法的有效性。如果需要文中的仿真模型&#xff0c;关注微信公众号&#xff1a;浅谈电机控制&#xff0c;留言获取。一、 传统…...

ubuntu下磁盘管理

一. ubuntu 磁盘文件 在做 Linux 嵌入式开发中&#xff0c;一般选择 U 盘的要求是&#xff1a;确保 U 盘是 FAT格式&#xff0c;即选用 FAT32 格式的U盘或 SD 卡。不要用 NTFS 格式的 U 盘或 SD卡&#xff0c;因为Linux 大多数系统都不支持 NTFS格式的&#xff0c;NTFS 格式的…...

Python学习-----排序问题1.0(冒泡排序、选择排序、插入排序)

目录 前言&#xff1a; 1.冒泡排序 2.选择排序 3.插入排序 前言&#xff1a; 学过C语言肯定接触过排序问题&#xff0c;我们最常用的也就是冒泡排序、选择排序、插入排序……等等&#xff0c;同样在Python中也有排序问题&#xff0c;这里我也会讲解Python中冒泡排序、选择排…...

LeetCode 535. TinyURL 的加密与解密

TinyURL 是一种 URL 简化服务&#xff0c; 比如&#xff1a;当你输入一个 URL https://leetcode.com/problems/design-tinyurl 时&#xff0c;它将返回一个简化的URL http://tinyurl.com/4e9iAk 。请你设计一个类来加密与解密 TinyURL 。 加密和解密算法如何设计和运作是没有限…...

【c++】类和对象2—构造函数、析构函数、拷贝构造函数

文章目录构造函数和析构函数构造函数的分类及调用拷贝构造函数调用时机构造函数调用规则深拷贝与浅拷贝构造函数和析构函数 c利用了构造函数和析构函数解决上述问题&#xff0c;这两个函数将会被编译器自动调用&#xff0c;完成对象初始化和清理工作。对象的初始化和清理工作是…...

[C++关键字] const/constexpr

文章目录const/constexpr[^1]const 与 宏const 与 类const 与 指针const 其他constexpr (C11之后)referenceconst/constexpr1 尽可能的使用constexpr对于不变的变量&#xff0c;尽量用const修饰 const 与 宏 const vs define的比较&#xff1a;define只是字符的替换&#xf…...

FPGA电源电流参数

一、FPGA里各个电源释义 VCCINT VCCINT是FPGA芯片的内核电压&#xff0c;是用来给FPGA内部的逻辑门和触发器上的电压。即芯片的晶体管开关是有核心电压提供。当内部逻辑工作时钟速率越高&#xff0c;使用逻辑资源越多&#xff0c;则核心电压供电电流会更大&#xff0c;可高达几…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

GO协程(Goroutine)问题总结

在使用Go语言来编写代码时&#xff0c;遇到的一些问题总结一下 [参考文档]&#xff1a;https://www.topgoer.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B/goroutine.html 1. main()函数默认的Goroutine 场景再现&#xff1a; 今天在看到这个教程的时候&#xff0c;在自己的电…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

HybridVLA——让单一LLM同时具备扩散和自回归动作预测能力:训练时既扩散也回归,但推理时则扩散

前言 如上一篇文章《dexcap升级版之DexWild》中的前言部分所说&#xff0c;在叠衣服的过程中&#xff0c;我会带着团队对比各种模型、方法、策略&#xff0c;毕竟针对各个场景始终寻找更优的解决方案&#xff0c;是我个人和我司「七月在线」的职责之一 且个人认为&#xff0c…...

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南

在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...