Linux常用工具-2

目录

1. gdb

2.make&makefile

3.git

1. gdb

gbd:是一种调试器--用于调试一个程序的运行过程,查找程序出问题的位置。

程序调试的前提:是该程序必须是一个debug版本的程序。

对于程序的版本分为两种:

  • debug版本程序:调试版本,不会对代码进行任何优化,并且会加入调试符号信息;

release版本程序:发布版本,会对代码进行一些优化,更利于程序的运行效率(无法调试)

值得注意的是,gcc一般默认生成的是release版本程序,如果想要生成debug版本程序则需要再编译程序的时候,加上-g选项。即:gcc -g  main.c -o main。

调试过程:

1.使用gdb加载程序:gdb ./main;

2.开始调试:

  • start--开始逐步调试;
  • run--直接运行;

3.逐步调试:

  • next--下一步(逐过程);
  • step--下一步(逐语句);
  • until:main.c:18--直接运行到指定文件的指定行(18);

4.查看代码:

  • list--默认查看调试行附近的代码,list main.c:18查看指定文件指定行附近的代码;

5.断点操作:

  • break main.c:18 给指定代码指定行打断点,或可以break Fun直接给对应函数打断点;
  • continue:从当前调试位置开始继续向下运行(并不是逐步调试,而是直接运行);
  • info break:查看所有断点信息;
  • delete break_id:删除指定断点;

6.内存操作:

  • 变量数据的查看与设置:print val -- 查看指定变量的数据,print val = 10 -- 设置变量的数据;
  • 查看函数调用栈:backtrace,程序当前运行位置肯定是调用栈的栈顶函数,因为函数是逐个压栈的。

2.make&makefile

make&makefile:是项目的自动化构建工具。

makefile:普通的文本文件,在该文件中可以记录项目的规则;(#是注释)

make:是一个程序,叫做makefile解释器,即是makefile中的编写规则,

对于makefile存在一定的编写规则:

1.必须有目标对象,就是我们要生成的文件名称,或者说是需要完成的操作名称;

2.可以有依赖对象,要生成目标对象文件,需要依赖哪些文件,目标对象和依赖对象之间以冒号间隔;

3.目标生成规则中的指令 -- 要生成一个文件或者完成一个操作所需要执行的指令(注意指令前必须有个TAB制表符)

对于make的解释执行规则:

1.执行make的时候,会在当前目录下找寻makefile文件进行解释;

2.找到makefile后,在makefile中,找到第一个目标对象,作为要生成的终极*/目标对象(即makefile中的第一个目标对象);

3.检测目标对象是否需要重新生成;(检测目标和依赖的时间关系,在上一次目标对象被生成后,依赖对象是否被修改)

  • 当目标对象不存在,肯定需要重新生成;
  • 依赖对象被修改过,肯定需要重新生成;
  • 依赖对象不存在,则需要查找依赖对象的生成规则,先对依赖对象进行生成。

 4.所有的依赖对象都更新生成之后,然后再执行指令,生成终极目标对象。

makefile中其他的编写规则:

1.伪对象:与外部的实际文件解除关联关系,表示该对象一定会进行规则指令的执行;

声明:.PHONY:main,即是将main声明为伪对象。

2.自动变量(预定义变量):在不同位置表示不同数据的内置变量。

还存在一些函数来获取具有共同特征的文件,例如:

  • $(wildcard ./*.c) 获取指定规则的文件名,此处是获取.c文件;
  • $(patsubst %.c, %.o, $(var)) 字符串替换,此处是将var变量中的内容.c替换成.o。

3.git

git:项目的版本管理工具,对代码进行托管,并进行版本管理。

优点:

  • 托管备份,容灾性强
  • 版本管理,随时可以进行版本回滚

git本质上是一种分布式的思想,即每一个主机都是一个git仓库,并且可以任意选择其中某一个仓库当作主仓库。

git操作的三板斧操作:

1.git clone:从托管服务器克隆一个分支仓库到本地;

2.git add:添加本地仓库所修改的文件记录;

3.git commit:提交本地仓库的版本;

4.git push:将本地仓库版本同步到托管平台。​​​

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值