【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
目录
打赏
0
1
1
0
16
分享
相关文章
linux系统ubuntu中在命令行中打开图形界面的文件夹
在Ubuntu系统中,通过命令行打开图形界面的文件夹是一个高效且实用的操作。无论是使用Nautilus、Dolphin还是Thunar,都可以根据具体桌面环境选择合适的文件管理器。通过上述命令和方法,可以简化日常工作,提高效率。同时,解决权限问题和图形界面问题也能确保操作的顺利进行。掌握这些技巧,可以使Linux操作更加便捷和灵活。
141 3
适用于 Linux 的最佳命令行下载加速器
适用于 Linux 的最佳命令行下载加速器
152 3
Linux GDB 调试
Linux GDB 调试
91 10
探索Linux操作系统:从命令行到脚本编程
【8月更文挑战第31天】在这篇文章中,我们将一起潜入Linux操作系统的海洋,从最基础的命令行操作开始,逐步深入到编写实用的脚本。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和实用技能。我们将通过实际代码示例,展示如何在日常工作中利用Linux的强大功能来简化任务和提高效率。准备好了吗?让我们一起开启这段旅程,探索Linux的奥秘吧!
嵌入式GDB调试Linux C程序或交叉编译(开发板)
【8月更文挑战第24天】本文档介绍了如何在嵌入式环境下使用GDB调试Linux C程序及进行交叉编译。调试步骤包括:编译程序时加入`-g`选项以生成调试信息;启动GDB并加载程序;设置断点;运行程序至断点;单步执行代码;查看变量值;继续执行或退出GDB。对于交叉编译,需安装对应架构的交叉编译工具链,配置编译环境,使用工具链编译程序,并将程序传输到开发板进行调试。过程中可能遇到工具链不匹配等问题,需针对性解决。
309 3
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
如何配置环境并使用QEMU虚拟机结合GDB进行Linux内核代码的断点调试,包括安装QEMU、交叉编译工具链,编译内核以及通过GDB远程连接进行调试的详细步骤。
389 0
内核实验(一):使用QEMU+GDB断点调试Linux内核代码
|
7月前
|
探索Linux操作系统:命令行与脚本编程基础
【8月更文挑战第31天】在这篇文章中,我们将一起踏上一段旅程,深入探索Linux操作系统的奥秘。通过学习命令行的使用和编写简单的脚本,你将能够更高效地与你的计算机进行交流。无论你是新手还是有经验的用户,本文都将为你打开一扇通往Linux世界的大门。准备好了吗?让我们开始吧!
深入理解Linux系统运维:命令行与脚本的奥秘
【8月更文挑战第30天】在Linux的世界里,命令行是运维人员的灵魂之窗。掌握命令行,就像握住了一把钥匙,能开启系统管理的宝藏箱。本文将带你走进Linux的命令行世界,通过实际代码示例,解锁那些高效管理和维护系统的秘籍。你将学到不仅仅是命令本身,更是如何将这些命令编织成强大的脚本,让日常的运维工作变得游刃有余。准备好跟随我的步伐,一起深入探索Linux命令行与脚本的奥秘吧!

热门文章

最新文章