上一章节我们介绍了gcc/g++的使用,也对动静态库有了一个初步的了解。这让我们对程序运行的过程有了更加深刻的了解,接下来我们就要讲一讲make/makefile的使用,以及gdb的使用。
一.自动化构建代码。
谈到自动化构建代码,我们就不得不谈到makefile的使用了。
首先是makefile,它是一个特殊的文本文件,相当于一个脚本,可以控制一个项目的执行顺序。在执行一些大项目的时候,我们需要控制一些程序的执行顺序,这个时候我们就需要用到makefile。跟makefile配对使用指令则是make与make clean。
我们先来看makefile内部:
这个是我在makefile里写的指令,我们逐步进行分析。
mytest:test.c这一行指的是依赖关系,下面一行gcc test.c -o mytest则是依赖方法。依赖关系中的左边是右边通过依赖方法得到的,这个就是依赖关系中两个参数的关系。
.PHONY指的是伪目标,后面跟的clean并不是一个文件,只是单纯的要通过这个指令来执行一些命令,如图中就是要执行rm -f mytest的指令。
具体用法如下:
二.gdb的使用
首先我们要明白,gdb是在linux环境下调试代码的工具,既然是调试,那必定涉及到debug和release,平时我们在linux环境下通过gcc编译链接后的代码都是release版本的,而release是不可被调试的,所以我们得通过gcc -g来使程序处于debug的模式下,我们才可以正常使用gdb。
下面我们就来介绍gdb的用法:
gdb+要调试的文件:将该可执行文件进入调试模式。
进入之后才能执行以下操作:
r:开始调试。
enable,disable:启用,禁用断点。
b line:在第line行打断点。
s:逐语句。
n:逐过程。
p+变量:查变量。
dispaly+变量:长显示。
undisplay+序号:去长显示。
until+line:直接调试到line。
finish:运行完当前函数。
continue:从一个断点运行到下一个断点。
bt:调用堆栈。
set var i=?:更改变量的值。