Makefile
什么是Makefile
文件命名和规则
演示
工作原理
原理的演示
第一个原理
- 也解释了makefile文件的其他规则一般是为第一条规则服务的(默认执行第一条规则,如果下面的规则与第一条没有关系,则不会执行下面那条没有关系的规则)
- 该版本的效率比前面第一种makefile版本的效率更高
第二个原理
-
更改之前进行make,显示app已经是最新的
-
更改了一下man.c后,main.c的时间晚于main.o,再进行make,发现执行了如图中的命令
变量
演示
模式匹配
演示
函数
演示
补充
1. clean
- 删除一些不需要的文件,如上述示例生成的.o文件
伪目标(没懂)
- clean作为目标, 没有找到对应的依赖文件, 所以不执行
- 设置一个伪目标(新建的文件clean),再次执行,执行成功
GDB
什么是GDB
准备工作
演示
gcc -g -Wall test.c -o test
//下图为调试与未调试的大小对比,说明调试后是会往可执行文件里添加信息
GDB命令
启动、退出和查看代码
演示与注意
- 在进行准备工作之后才可以启动调试。(一定要进行准备工作,也就是-g)
- 源代码文件要与进行准备工作后的文件放在同一个目录下(可以自己试一下,用list去查看文件)
- 按回车默认执行上一条命令
- 查看非当前文件代码不能只写一个文件名,不然会当成函数去查看,会查不到
多个文件编译调试,为了演示查看非当前文件代码后面的查看代码命令(自己试一试吧,没啥)
test1文件是之前没有进行调试编译后的文件
源文件更换后,list看不到信息
断点操作
演示与注意
- 重新退出gdb,之前设置的断点将清除,需要重新设置
- 断点信息里的Enb是enable(可用)的缩写,可用disable使之无效(N),也可用enable使之有效(Y)
- 条件断点为最后一张图的演示
- 其他的断点设置自己试一试,就不再演示了
调试命令
演示与注意
- run停在断点那,断点那行并没有执行
- until跳出循环的条件:循环内的语句不能有断点
- finish跳出函数的条件:函数内不能有断点
- next与step的区别:如图三和图四
next:(并没有进入到bubbleSort函数体里)
step:(进入到bubbleSort函数体内)
自动变量:
设置变量值: