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

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

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

c1ae9dd02fe458d477c162b3e98572f1_ba0d3f5bde8a4e738ca10d3b70739bb9.gif

目录

\r和\n的区别:

进度条小程序  

git 命令行

Linux调试器:gdb的使用

背景

gdb的使用

gdb调试指令:


\r和\n的区别:

\r:回车

\n:换行

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


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


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


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

bf29961e2bd82ffbabac0069847170f6_67a3f28e4c36405d88c049c98cbec31e.png

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

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

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

63287f2f3df2191d28a3a1e639536510_1631b4d9495e4ba6b864a6e15918b2fe.png

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


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


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


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


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


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

5c398034c4fb9500ba0b0d61e8ffeb5e_7ed7b650a9a242babc0b6834e3bce5db.png

进度条小程序  

#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一个远端仓库:


复制仓库的链接


1d781ae538516f6b68bfc3e990410196_9c4b1e0243034def82177e0e47a7ad8f.png


在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


相关实践学习
阿里云图数据库GDB入门与应用
图数据库(Graph Database,简称GDB)是一种支持Property Graph图模型、用于处理高度连接数据查询与存储的实时、可靠的在线数据库服务。它支持Apache TinkerPop Gremlin查询语言,可以帮您快速构建基于高度连接的数据集的应用程序。GDB非常适合社交网络、欺诈检测、推荐引擎、实时图谱、网络/IT运营这类高度互连数据集的场景。 GDB由阿里云自主研发,具备如下优势: 标准图查询语言:支持属性图,高度兼容Gremlin图查询语言。 高度优化的自研引擎:高度优化的自研图计算层和存储层,云盘多副本保障数据超高可靠,支持ACID事务。 服务高可用:支持高可用实例,节点故障迅速转移,保障业务连续性。 易运维:提供备份恢复、自动升级、监控告警、故障切换等丰富的运维功能,大幅降低运维成本。 产品主页:https://www.aliyun.com/product/gdb
相关文章
|
12天前
|
Ubuntu Linux 测试技术
Linux系统之在命令行玩转Pacman4console贪吃人经典小游戏
【7月更文挑战第12天】Linux系统之在命令行玩转Pacman4console贪吃人经典小游戏
37 11
|
1月前
|
NoSQL Linux C语言
Linux gdb调试的时候没有对应的c调试信息库怎么办?
Linux gdb调试的时候没有对应的c调试信息库怎么办?
19 1
|
15天前
|
Java Shell Linux
【Linux】手把手教你做一个简易shell(命令行解释器)
【Linux】手把手教你做一个简易shell(命令行解释器)
17 0
|
1月前
|
小程序 Linux C语言
Linux小程序 —— 进度条
Linux小程序 —— 进度条
37 6
|
22天前
|
Linux
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
Linux02---命令基础 Linux命令基础, ls命令入门,ls命令参数和选项,命令行是一种以纯字符操作系统的方式,command命令本身,options命令的细节行为,parameter命令的
|
24天前
|
运维 Linux 开发者
Linux命令行实用技巧与常用命令介绍
Linux命令行实用技巧与常用命令介绍
|
29天前
|
监控 Unix Shell
探秘GNU/Linux Shell:命令行的魔法世界
探秘GNU/Linux Shell:命令行的魔法世界
25 0
|
1月前
|
Linux
【make/Makefile】Linux下进度条的设计与实现
【make/Makefile】Linux下进度条的设计与实现
|
1月前
|
NoSQL 编译器 Linux
【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用
【Linux】--- Linux编译器-gcc/g++、调试器-gdb、项目自动化构建工具-make/Makefile 使用
23 0
|
1月前
|
NoSQL Linux C语言
Linux gdb调试的时候没有对应的c调试信息库怎么办?
Linux gdb调试的时候没有对应的c调试信息库怎么办?
17 0