【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
相关文章
|
4天前
|
前端开发 算法 开发工具
Git分支批量清理利器:自定义命令行插件实战
Git分支批量清理利器:自定义命令行插件实战
29 0
|
3天前
|
NoSQL Linux 开发工具
【linux】git和gdb调试工具
【linux】git和gdb调试工具
39 5
|
6天前
|
NoSQL Linux C语言
【Linux】Linux调试器-gdb使用
【Linux】Linux调试器-gdb使用
【Linux】Linux调试器-gdb使用
|
6天前
|
Linux 开发工具 数据安全/隐私保护
【Linux】git操作 - gitee
【Linux】git操作 - gitee
【Linux】git操作 - gitee
|
7天前
|
NoSQL Linux 编译器
【Linux工具篇】调试器gdb
【Linux工具篇】调试器gdb
11 0
|
7天前
|
机器学习/深度学习 小程序 Linux
Linux第一个小程序——进度条
Linux第一个小程序——进度条
22 1
|
15天前
|
域名解析 运维 网络协议
Linux命令行全景指南:从入门到实践,掌握命令行的力量
Linux命令行全景指南:从入门到实践,掌握命令行的力量
76 0
|
27天前
|
NoSQL Linux
Linux下的系统编程——gdb调试工具(三)
Linux下的系统编程——gdb调试工具(三)
39 0
Linux下的系统编程——gdb调试工具(三)
|
Linux 开发工具 git
|
2月前
|
测试技术 持续交付 开发工具
1.Git使用技巧-常用命令3
1.Git使用技巧-常用命令3
27 0

热门文章

最新文章

相关产品

  • 云迁移中心