调试器:gdb
工程管理器:make
脚本编程:-shell
gdb:
1.GNU计划的工具:内核调试KGDB
2.程序的错误分类:编译时错误(语法错误)、运行时错误(内存错误、逻辑错误)
3.gdb功能:a:运行程序;b:设置断点;c:查看变量值
4.使用gdb时,gcc命令需要使用-g,如:hello.c gcc -g hello.c -o hello—>gdb hello
(gdb hello --tui 图形化)
5.使用gdb(详解)
–tui:将代码显示在一个漂亮的交互式窗口内
layout asm:显示汇编
layout src:显示源码
layout split:分割
run:运行程序
finish:结束运行
continue:继续运行直到下次断点
break+行号:断点设置
break+函数名
break+行号 if条件
info break:查看断点
delete+断点编号:删除断点
enable+断点编号:启动断点
disable+断点编号:关闭断点
print:打印变量值
单步执行:step、next
工程管理器-make(如何编写makefile文件)
1.工程管理器:编译许多个文件(类型不同、存放在不同目录、资源文件使用)组成的软件代码结构 。
2.–实现自动编译,根据makefile文件内容进行:a:根据makefile内容进行自动编译;b:根据文件时间戳来判断文件是否需要进行。
3.makefile:makefile时个脚本文件(批处理)
makefile语法:目标、依赖、命令
目标:依赖
按下Tab—>键入命令
执行命令,依赖这个文件,最终生成目标。
makefile的执行顺序时自上向下的,当目标文件依赖的文件时一个目标时,会先跳转到该目标去执行相关命令。
4.伪目标:只执行命令,不生成对应的文件
.PHONY:clean install(伪目标)
$@指目标体后面的依赖
#注释用
5.为什么将.c文件先编译成.o文件生成可执行文件?
前提:源文件到可执行文件:预处理、编译、汇编、链接(4s)
gcc hello.c -o hello 4s
cal:mian.c add.c sub.c div.c mul.c
gcc *.c -o cal 20s
修改:add.c…make 20s(.c–>.o)
第二次:4s+4s=8s
节省了运行时间
6.功能目录管理软件代码
makefile:
总控Makefile :进入各个功能目录执行make,并将所有.o文件链接成可执行文件
功能目录Makefile:将功能目录下的源文件编译生成目标文件.o
scripts目录头文件Mkefile:定义变量,供其他makefile使用
简单实践:
1.
运行:
makefile:
2.
makefile:
make:
运行结果: