【Linux】Linux小程序(进度条)、git命令行的使用及gdb的使用

news2025/2/26 9:51:05

😁作者:日出等日落

🔔专栏:Linux

辛勤的蜜蜂永没有时间悲哀。                                                            ——布莱克

目录

\r和\n的区别:

进度条小程序  

git 命令行 

Linux调试器:gdb的使用

 背景 

gdb的使用 

gdb调试指令:


\r和\n的区别:

  • \r:回车
  • \n:换行

那么这两个有什么区别呢?

    (1)让光标从第一行跳到第二行,但是光标只是垂直向下跳,并没有在第二行的开始。这个操作就是换行(\n)。

    (2)在第二行让光标跳到最开始的位置,这个操作就是回车(\r)。

当只有\r时的运行结果:

只有回车,我们可以想象到运行的结果是什么样,答案是:什么都不显示。为什么呢?

  • 回车之后,光标来到了文本行的开始位置,此时linux的命令行就会从光标处开始,将我们的文本覆盖掉,我们就什么也看不到

当只有\n时的运行结果:

 此时test.c文件有\n(行缓冲区内容打印)

此时运行,打印出hello world 这时光标会停3秒

如果没有\n,会先停3秒然后再打印出hello  world

无论是否有\n时,都是先走printf再sleep的,当有\n时如果读到了\n的位置就会先将行缓冲区的内容马上打印出来再往下走。

注意:fflush函数可以立马刷新行缓冲区
 

当\r和\n同时再的时候:

进度条小程序  

#include "proc.h"  
  2   
  3   
  4 #define SIZE 102  
  5 #define STYLE '='  
  6 #define ARR ">"  
  7   
  8 void process()  
  9 {  
 10   const char *lable = "|/-\\";  
 11    char bar[SIZE];  
 12     memset(bar, '\0', sizeof(bar));  
 13     int i = 0;  
 14     while( i <= 100 )  
 15     {  
 16         printf("[\033[42;32;31m%-100s\033[0m][%d%%][%c]\r", bar, i, lable[i%4]);  
 17         fflush(stdout);  
 18         bar[i++] = STYLE;  
 19                                                                                                           
 20         usleep(100000);//usleep是微秒,1秒等于1000000微秒  
 21     }                                                      
 22     printf("\n");                                         
 23 }

proc.h文件:

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

git 命令行 

检查Linux是否安装git:

git --version

如果没有,安装指令是

sudo yum install -y git 

clone一个远端仓库:

复制仓库的链接

在Linux中创建远端仓库: 

git clone 链接  

提交代码带Git:

git add 文件名 

提交当前目录下的所有代码

git commit -m “文字描述”

最后推送到远程:

 git push

第一次在Linux提交代码的会出现这个情况:

这里需要你设置邮箱和名字

git config --global user.name"你的名字"

git config --global  user .email"你的邮箱"

Linux调试器:gdb的使用

 背景 

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

debug为可以调试的版本,release为优化后的版本也就是测试版本了

Linux gcc/g++出来的是二进制文件,默认是release版本。

在VS中,我们可以按F10进入调试

在Linux我们依旧可以调试,要使用gdb调试,必须在源代码生成二进制程序的时候, 加上 -g 选项

gdb的使用 

gdb 文件名 

 gcc生成后默认是release版本,因此是不可以调试的

查看调试信息 

readelf -S 文件名

gdb调试指令:

  • list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
  • list/l 函数名:列出某个函数的源代码。
  • r或run:运行程序。
  • n 或 next:单条执行(逐过程执行)。
  • s或step:进入函数调用(逐语句执行)
  • break(b) 行号:在某一行设置断点 break 函数名:在某个函数开头设置断点
  • d 编号 :删除断点
  • 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

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

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

相关文章

Linux-模拟一个简单的shell

什么是shell外壳&#xff1f;就是操作系统给我们的一个命令行解释器&#xff0c;在Linux系统中&#xff0c;它的shell叫做bash。 那么bash本质是什么呢&#xff1f; 本质就是一个文件&#xff0c;一个进程。 万物皆文件 每个操作系统的shell都是很复杂的&#xff0c;想要…

chatgpt赋能Python-python_o_n_

Python O(n)的介绍 Python是世界上最流行的编程语言之一&#xff0c;因为其简单易学的语法&#xff0c;强大的功能和广泛的使用领域。对于程序员来说&#xff0c;时间复杂度是非常重要的一个概念。它用来描述一个算法在处理输入数据时所需的时间和空间资源。 在计算机科学的算…

CSS中块级元素,行内块元素,行内元素的特点

CSS自学笔记 目录 一、什么是元素显示模式 二、CSS的元素显示模式 1.块元素 2.行内元素 3.行内块元素 前言 网页的标签非常多&#xff0c;在不同地方会用到不同类型的标签&#xff0c;了解他们的特点可以更好的布局我们的网页。 HTML 元素一般分为块元素和行内元素两种类型…

220v转15v芯片-220v转15v用什么芯片?

FET开关&#xff0c;具有高效率和稳定性。 Q&#xff1a;为什么需要将220v转换为15v&#xff1f; A&#xff1a;在家庭电器和电子设备中&#xff0c;很多电路需要低电压直流电源供电。而家庭供电一般为220v交流电&#xff0c;需要经过转换才能得到所需的低电压直流电源。 Q&…

错题记录—哪个类用到了解决哈希冲突的开放定址法,MYSQL实现主从复制的日志是哪种,Java对象的初始化方式有

解决哈希冲突&#xff08;四种方法&#xff09;&#xff1a; 1、开放定址法&#xff1a;我们在遇到哈希冲突时&#xff0c;去寻找一个新的空闲的哈希地址。 &#xff08;1&#xff09;线性探测法 &#xff08;2&#xff09;平方探测法&#xff08;二次探测&#xff09; 2、再哈…

题解2023.5.23(欧拉筛)

C.Hossamand Trainees 欧拉筛,预处理先筛出质数&#xff0c;分解质因数对于出现两次及以上的输出yes 我们需要筛出根号(1e9)以内的所有质数&#xff0c;根据质数定理&#xff0c;大约有4e^3个质数&#xff0c; 时间复杂度分析&#xff1a;le5*4e34e8 #include<bits/stdc.…

Python 3.10.11 liunx系统安装

官网下载 https://www.python.org/downloads/source/ 将tar包上传服务器安装 安装基础功能软件 yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel 解压安装 tar -z…

chatgpt赋能Python-python_noob

Python for Beginners: An Introduction to the World’s Most Popular Programming Language Python is a high-level programming language that has become one of the most popular and widely used languages in the world. It’s simple, easy to read, and has a vast …

chatgpt赋能Python-python_pecan

Python Pecan: 构建Web应用程序的高效框架 Python是一种简单易学、功能强大的编程语言&#xff0c;非常适合Web应用程序的开发。而Pecan则是一个基于Python的高效框架&#xff0c;可以简化Web应用程序的开发过程。本文将介绍Python Pecan框架的优点、使用方法和性能表现。 什…

计算机网络考试多选题汇总Ⅱ(请关注博客在资源文档下载完整答案)

https://cadyin.blog.csdn.nethttps://blog.csdn.net/qq_38639612?spm1010.2135.3001.5421 计算机网络考试多选题汇总 1、在Windows中&#xff0c;任务管理器的作用是() A&#xff0e;终止未响应的应用程序 B&#xff0e;终止进程的运行 C&#xff0e;查看系统当前的信息 …

【新星计划·2023】网络协议———DHCP讲解

前言 在工作中&#xff0c;利用DHCP可以有效的节约IP地址&#xff0c;既保证了网络通信&#xff0c;又提高IP地址的使用率。 一、DHCP是什么&#xff1f; DHCP全称为Dynamic Host Configuration Protocol&#xff0c;是一种网络管理协议&#xff0c;中文含义为“动态主机配置…

node版本引起的一系列问题

1. 安装node node官方地址 下载对应系统zip到对应的文件夹解压 在目录下创建文件夹node_cache 和 node_global 修改 npm 配置&#xff0c;配置 npm 的全局模块的存放路径以及 cache 的路径 //npm config set prefix 文件路径 npm config set prefix D:\software\nodeJs\n…

shell 免交互

文章目录 Here Document 免交互实验多行注释基本命令 实验 Here Document 免交互 使用I/O重定向的方式将命令列表提供给交互式程序或命令&#xff0c;比如 ftp、cat 或 read 命令。是标准输入的一种替代品可以帮助脚本开发人员不必使用临时文件来构建输入信息&#xff0c;而是…

DR2: Diffusion-based Robust Degradation Remover for Blind Face Restoration

DR2: Diffusion-based Robust Degradation Remover for Blind Face Restoration (Paper reading) Zhixin Wang, Shanghai Jiao Tong University, CH, CVPR2023, Cited:0, Code, Paper 1. 前言 传统的盲脸部修复通常使用预定义的退化模型来合成降质的低质量数据进行训练&#…

CodeForces.1810B.糖果.[中等][ifelse选择][注意输出格式]

题目描述&#xff1a; 解题思路&#xff1a; 题目解读&#xff1a; 初始状态只有一个糖果&#xff0c;即x1&#xff0c;给定想要获得的总糖果数y。 只能进行两种操作&#xff0c;分别是做2x-1和2x1。给出从 x1 到 目标数字 y 的操作步数和具体步骤。 示例1 从1到2&#xff…

2023最全CTF入门指南(建议收藏)

目录 一、CTF简介 二、CTF竞赛模式 三、CTF各大题型简介 四、CTF学习路线 4.1、初期 1、htmlcssjs&#xff08;2-3天&#xff09; 2、apachephp &#xff08;4-5天&#xff09; 3、mysql &#xff08;2-3天&#xff09; 4、python (2-3天) 5、burpsuite &#xff08;…

防火墙——iptables防火墙(四表五链、防火墙配置方法、匹配规则详解)

iptables防火墙 一、Linux包过滤防火墙1、Linux防火墙概述2、netfilter3、iptables4、netfilter/iptables关系 二、四表五链1、表链作用2、四表3、五链4、数据包到达防火墙时&#xff0c;规则表之间的优先顺序5、规则链之间的匹配顺序 三、iptables的安装四、iptables防火墙的配…

chatgpt赋能Python-python_nornir

Python Nornir - 让网络自动化更高效 随着网络技术的发展和网络设备的不断增多&#xff0c;网络自动化成为了现代网络管理的必备技能。然而&#xff0c;手动编写和执行网络任务的方式不仅费时费力&#xff0c;也容易出错和难以维护。 Python Nornir 是一个开源的网络自动化框…

Android 事件分发机制

Android 事件分发机制 概述事件分发过程的主要方法&#xff1a; ViewView 事件的分发 dispatchTouchEventView 事件的处理&#xff08;消费&#xff09;onTouchEvent&#xff1a; ViewGroupViewGroup 事件的分发 dispatchTouchEvent 概述 这里的事件指的是 View 对手势的响应&…

chatgpt赋能Python-python_pe

Python PE&#xff08;Python Performance Engineering&#xff09;介绍 Python PE&#xff08;Python Performance Engineering&#xff09;是Python编程的一个方面&#xff0c;旨在提高Python程序的性能和效率。PE的目标是优化Python程序的执行时间、内存占用和资源消耗&…