【Linux】——git和gdb的简单使用技巧

目录

1.\r&&\n

2.缓冲区

3.做一个Linux的小程序——进度条

1.makefile代码:

2.proc.h代码

3.proc.c代码

4.main.c代码

4.git(上传做好的小程序)

5.Linux调试器-gdb使用


1.\r&&\n

在Linux中,可以将\r看成将光标移动到光标所在行的最左侧(回车)

\n看成换行,是换到下一行

2.缓冲区

凡是向显示器打印的所有内容,都是字符

3.做一个Linux的小程序——进度条

1.makefile代码:

myprocess:main.c proc.c
	gcc -o myprocess main.c proc.c
.PHONY:clean
clean:
	rm -f myprocess

2.proc.h代码

#pragma once

#include 


extern void process();

3.proc.c代码

#include "proc.h"
#include 
#include 

#define SIZE 102
#define STYLE '='
#define ARR '>'

// "|/-\\"
void process()
{
    const char *lable = "|/-\\";
    char bar[SIZE];
    memset(bar, '\0', sizeof(bar));
    int i = 0;
    while( i <= 100 )
    {
        printf("[\033[42;32;31m%-100s\033[0m][%d%%][%c]\r", bar, i, lable[i%4]);
        fflush(stdout);//刷新显示器
        bar[i++] = STYLE;
        if(i != 100) bar[i] = ARR;
        usleep(100000);
    }
    printf("\n");
}

4.main.c代码

#include "proc.h"


int main()
{
    process();

    return 0;
}

4.git(上传做好的小程序)

git的使用流程

1.git clone +gitee的仓库http地址——将远端的git仓库克隆到本地的Linux中

2.cp “想要上传的代码”  本地的gitee仓库 ——将本地的想要上传的代码复制到本地的gitee仓库里面

3.git add (-A). ——将本地的gitee仓库add(.代表的是本地的仓库)

3.git commit -m “xxxxxx”——m后面填写的是本次上传代码的备注信息

4.git push——推送到远端的gitee仓库里面

5.Linux调试器-gdb使用

gcc和g++形成的可执行程序是release版本的,不是debug版本的

加上-g选项,gcc和g++会以debug版本进行编译程序,生成的可执行程序是debug版本的,这样才能用gdb调试

gdb主要掌握的是单进程调试功能,也就是在vs2019下怎么调试,就应该明白在gdb下如何调试

gdb使用流程

1.gdb “可执行程序”——用gdb打开可执行程序(debug版本)

2.l(list) 0——从第0行开始看代码,后续输入l+回车(不断回车),代码会自动往下翻滚(显示对应的代码)

3.r(run)——运行程序

4.b 行号——在某一行打断点

5.info b——查看断点(重点查看断点的首尾信息)

6.r——运行程序,此时程序在断点处停下

7.info b 此时可以发现断点已经被命中一次了

8.d 断点编号——删除断点

9.info b——此时已经没有断点了

10.r——运行程序,此时会询问你是否要重新开始调试

11.disable breakpoint 断点编号——禁用断点(将断点使能信号暂时关闭)

12.enable breakpoint 断点编号——开启被禁用的断点(与11条是一对)

13.逐语句(进入函数,一条条的跑完代码)逐过程(以函数为单位,但是不进入函数,跑完代码)调试方法:

1.n:逐过程

2.s:逐语句

3.p 变量——打印变量的值

4.display 变量名——常显示变量(可以是内置类型,也可以是结构体等自定义类型)的值(类似与vs2019的监视)

5.undisplay 变量编号——取消看常显示变量的值

6.until X行号:运行到第X行停下来

PS:

所有的调试器只是一个可以找出问题问题的工具,不能帮我们解决问题代码,真正能解决问题代码的只有我们自己。

所有查看代码内容的指令,并不影响我们调试的指令,比如:有的时候代码太多了,看不过来,我们用l去看自己想看的代码段,这种查看内容的l指令并不影响我们调试的位置。

14.finish——进入一个函数后,按下finish,就会只执行完该函数后,停下来 

15.c(continue):从一个断点处,直接运行到下一个断点处

常用的gdb调试按键

进入调试:gdb binFile

退出: ctrl + d 或 quit

调试命令:

list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。

list/l 函数名:列出某个函数的源代码。

r或run:运行程序。

n 或 next:单条执行(逐过程执行)。

s或step:进入函数调用(逐语句执行)

break(b) 行号:在某一行设置断点

break 函数名:在某个函数开头设置断点

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

你可能感兴趣的:(Linux系统编程,linux,运维,服务器)