调试器:gdb
1.GNU计划的工具;内核调试KGDB
2.程序的错误分类:
编译时错误:语法错误
运行时错误:内存错误,逻辑错误
3.gdb的功能:运行程序,设置断点,查看变量值
4. hello.c操作
gcc -g hello.c -o hello
gdb hello
5.使用
(1) --tui:图像界面
layout asm:显示汇编
layout src:显示源码
layout split:同时显示汇编和源码
(2) break:设置断点
break+行号
break+函数名
break+行号 if条件
info break:查看断点信息
delete + 断点编号:删除断点
(3)
enable+断点编号:始能断点
disable+断点编号:无效断点
(4)
run:运行程序
continue:从当前断点继续运行,直到遇见下一个断点为止
list:显示源码
(5)单步执行
step:可以进入子函数
next:不能进入子函数
工程管理器——make
1.工程管理器:编译多个文件(类型不同,存放在不同目录,资源文件的使用)组成的软件代码结构----实现自动编译(根据makefile文件内容进行)
单个.c—gcc hello.c -o hello
100000个.c(分别保存在100个不同目录)—
2.如何编写makefile文件?
makefile是个脚本文件(批处理)。
makefile语法:目标、依赖、命令(按下tab)
目标:依赖
执行命令,依赖这个文件,最终生成目标。
makefile执行顺序:自上向下,当你的目标依赖的文件又是一个目标时,会先跳转到该目标去执行相关命令。
make+目标名:从该目标开始自上向下执行
3.“自动编译”:
(1)根据makefile文件的内容进行自动编译。
(2)根据文件的时间戳来判断文件是否需要编译。
4.伪目标
只执行命令,不生成对应的文件。
.PHONY:clean(定义伪目标clean)
5.为什么将.c文件先编译生成.o文件,再生成可执行文件?
节约程序运行时间。
6.功能目录管理软件代码------makefile
总控makefile:
进入各个功能目录执行make,并将所有.o文件链接生成可执行文件
功能目录makefile:
将功能目录下的源文件编译生成目标文件.o
scripts目录头文件makefile:
定义变量,供其他makefile使用
阅读makefile顺序:s----总----功