16.7.8内容
一.gdb调试器
1.功能非常强大的程序调试器,弥补了gcc调试效率低的特点。
gcc缺点:调试C程序时,只能依靠gcc发出的警告或错误信息来进行,所以调试的效率非常低。
例:
gcc -g demo.c -o demo
就等价于
gdb demo
2.gdb调试过程中
(gdb)
run 运行程序
list 查看代码,显示问题
break 设置断点
break 20停在第20行
break 20 if i=10
break add_sum加函数名表示在调用函数的 时候停止(add是函数,sum是函数名)
info break查看断点
delete 加断点号,删除断点
next 单步执行,不会进入子函数
step 单步执行,可进入子函数
print 查看结果 如print i或print sum
continue 继续执行
finish 结束当前函数
quit 退出
二.工程管理器Make
1.工程:多个源文件组成的程序,比如很多个.c文件
2.gcc *.c 编译所有c,麻烦又影响效率
make就是编译很多源文件
make优点1.使用方便,2.调试效率高
文件变了才检查和编译,不变就不编译
3.makefile 规定make如何编译源文件
touch makefile创建
写makefile:makefile就是脚本文件,写的是脚本语言shell(.sh)或者python(.pl)
脚本:实现批处理
Makefile规定在书写command命令行前必须加一个<Tab>键
如
hello: hello.o
(目标 依赖)
gcc hello.o -o hello
(按TAB 命令)
hello.o: hello.c
(目标 依赖)
gcc -c hello.c
(TAB )
gcc -c hello.c
从上往下执行,效果从下往上
3.自动编译
按照写的makefile编译
自动检查是否修改过
4.为什么要把.c变成.o:类似于饭店点菜,先做成半成品,提高效率
5.总控Makefile:进入各个功能子目录里执行make命令,将所有.o文件链接生成最终可执行文件
功能子目录Makefile:将src目录下.c文件编译成.o文件
scripts目录的Makefile:定义许多变量(相当于C语言的头文件)
6.mkdir -p sub/src 在sub下创建src(先创sub,再创src)
一.gdb调试器
1.功能非常强大的程序调试器,弥补了gcc调试效率低的特点。
gcc缺点:调试C程序时,只能依靠gcc发出的警告或错误信息来进行,所以调试的效率非常低。
例:
gcc -g demo.c -o demo
就等价于
gdb demo
2.gdb调试过程中
(gdb)
run 运行程序
list 查看代码,显示问题
break 设置断点
break 20停在第20行
break 20 if i=10
break add_sum加函数名表示在调用函数的 时候停止(add是函数,sum是函数名)
info break查看断点
delete 加断点号,删除断点
next 单步执行,不会进入子函数
step 单步执行,可进入子函数
print 查看结果 如print i或print sum
continue 继续执行
finish 结束当前函数
quit 退出
二.工程管理器Make
1.工程:多个源文件组成的程序,比如很多个.c文件
2.gcc *.c 编译所有c,麻烦又影响效率
make就是编译很多源文件
make优点1.使用方便,2.调试效率高
文件变了才检查和编译,不变就不编译
3.makefile 规定make如何编译源文件
touch makefile创建
写makefile:makefile就是脚本文件,写的是脚本语言shell(.sh)或者python(.pl)
脚本:实现批处理
Makefile规定在书写command命令行前必须加一个<Tab>键
如
hello: hello.o
(目标 依赖)
gcc hello.o -o hello
(按TAB 命令)
hello.o: hello.c
(目标 依赖)
gcc -c hello.c
(TAB )
gcc -c hello.c
从上往下执行,效果从下往上
3.自动编译
按照写的makefile编译
自动检查是否修改过
4.为什么要把.c变成.o:类似于饭店点菜,先做成半成品,提高效率
5.总控Makefile:进入各个功能子目录里执行make命令,将所有.o文件链接生成最终可执行文件
功能子目录Makefile:将src目录下.c文件编译成.o文件
scripts目录的Makefile:定义许多变量(相当于C语言的头文件)
6.mkdir -p sub/src 在sub下创建src(先创sub,再创src)
tree树状显示子目录结构
7.运用make
cd 返回根目录
cd ..返回上一层目录
cd ../..返回上两层目录
cd X访问X文件
client目录下cp Makefile ../0708把client目录下Makefile复制到0708目录下