gdb/cgdb

1.git

版本控制器

结论.git只记录变化

git是一个去中心化的版本控制器,但是我们通常使用的时候会按照中心化来使用,

version

用来判断我的电脑上面是否安装了git

也有一些关键词

git add把当前目录下所有的文件都上传到我的暂存区当中

git commit -m " "提交日志,提交到本地仓库中

git push 上传到远端仓库中

这个就是git的工作流程图

git status

查看当前文件夹里面的文件的状态,是在本地仓库?远端仓库?还是在缓存区

git log 查看当前仓库的提交日志

git pull 同步一下仓库(多人共同使用一个仓库的时候会使用这个)

2.gdb/cgdb

gdb/cgdb是用来调试我们的代码的,

gdb ------------------(可执行程序的文件),

此时我们直接使用的话会发现,无法使用,这就引起了一个知识点

我们在vs的时候,会发现,一份代码往往有两个版本,一个版本是debug

另外一个版本是release

debug:包含调试信息,会增加exe的体积,对用户没有任何的用处

release:给用户,不包含调试信息,体积较小

gcc/g++默认对编译方式是release版本,我们需要的是debug版本

所以在makefile的时候,就需要这样写

这样写就默认debug版本

注意刚开始进入的时候依旧显示不出原来的代码,要输入

start:显示源代码就可以了

调试代码的第一步很重要是什么呢?

就是,打断点

我们此时给16行打了一个断点

r:运行代码

运行到咱们打断点这个地方

l:用于查看源代码

但是只能查看附近的,此时我们的光标在16行,那么就可以看16行上下的代码

也可以

l 文件:行号

这种方式可以查看这个文件,这个行号的附件代码

info b

是用来查看断点的信息

d:删除断点,注意的是这里删除断点的序号要填info的序号

s:我们运行到进入函数的时候在VS中通常有两种方法,一种是进入函数逐语句,另外一种是,按过程,也就是不进入函数里面

s:逐语句

此时我们进入到了函数里面

n:逐过程

此时我们没有进入,直接输出了结果

p:当然我们调试的时候,往往需要看到某个函数的值,此时就可以使用p这个语法

p后面跟变量名就可以

但是我们继续向下运行,这个变量名就消失了,有没有办法不让他消失

display,就可以一直显示

我们不想显示了就直接undisplay就可以结束

until 行号

要是代码过长,就可以直接使用这个关键字,直接跳到这个位置

c:从当前断点,直接运行到下一个断点

总结:

until/finish/c

其中finish是进入函数之后,直接跳出

最后:调试的本质就是

发现问题:人

找到问题:gdb

分析问题:人

解决问题:人

补充关键词

disable 我们可以禁用这个断点,但是不删除

enable:和disable一样,释放被禁用的断点

watch检测一个值,要是变化了就视为断点,也就是条件断点

我们在调试过程中,发现了一个错误,有时候没必要直接退出在该代码

set var后面跟变量名=新值

条件断点

b 行号 if ......

如果不满足条件就默认没有断点,和上面的watch类似

上面描述的情况是默认此位置没有断点的

要是这个位置有一个普通断点,就可以使用condition

类似于这样

就可以把一个普通断点变成条件断点不需要加if

相关推荐
Julien20043 小时前
管理 Ansible 配置文件
linux·运维·服务器·ssh·学习方法
MicrosoftCloud3 小时前
性能排查 01|free 显示内存用了 90% 就是快满了吗?buff/cache 与 available 一次讲清
linux·运维·内存·free·buff/cache
xiaoye-duck4 小时前
《Linux 网络编程》深入理解 epoll(下):epoll 实战开发与 LT/ET 触发模式深度剖析
linux·网络
成为你的宁宁5 小时前
【Ubuntu 18.04安装Gitlab】
ubuntu·gitlab
峥无5 小时前
Linux线程深度剖析:轻量级进程、虚拟内存分页、进程线程资源对比
linux·运维·mmap
北风催呀催6 小时前
HuggingFace下载镜像加速技巧
linux·huggingface
MicrosoftCloud6 小时前
性能排查 02|vmstat、iostat、mpstat、sar 怎么读?性能四件套的分工与判读阈值
linux·ubuntu·vmstat·性能监控·iostat·sysstat
AR-26710-6 小时前
Linux Day16——日志
linux·运维