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

😁作者:日出等日落

🔔专栏: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

  • 23
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 33
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 33
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

日出等日落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值