(linux)gdb调试以及make的使用

gdb调试:

gcc -g main.c -o main                 在编译程序前加上“-g”为调试做准备

gdb main                                      调试程序

输入list”显示代码,可缩写成“l” ,默认显示10行,接着再输入list或者回车可以继续显示

list+行号   从此行号开始显示

list+函数名  从此函数名开始显示

回车的作用:重复执行上一次输入的语句

 设置断点:break(b)

break +行号:例如break 11 ,在第十一行插入断点

break+函数名:例如break f,在f函数插入断点

break  行号 if  条件 :例如break 5  if i 10:在i=10时,第五行断点生效

查看所有的断点信息:info break(info b)

 run(r):执行代码,直到到第一个断点停下

next(n):单步运行,但不进入子程序

step:单步运行,进入子程序

continue(c):程序继续运行,直到下一个断点

print(p)+变量:打印变量的值

finish(f):结束当前函数的运行

watch+变量:一直观察变量的变化过程

delete+断点序号:删除第几个断点,根据设置断点的顺序编号 

 clear+行数:删除第几行的断点

start:使程序运行到main函数停止

enable:使第几个断点生效

disable:使第几个断点失效

quit(q):退出调试

make的使用:在编译多个文件时,使用gcc的效率较低,gcc会编译所有的文件,而定义make规则后,只会编译那些修改过的文件。

vim  makefile:创建makefile文件,也可创建Makefile文件,当makefile和Makefile文件同时存在时,系统默认使用makefile文件。当makefile文件写完后,执行make命令进行编译,生成可执行文件。

若不使用 makefile作为文件名时,例如文件名为abc,abc写完后,使用make  -f  abc  指定使用此文件。

 1.最终生成的目标文件 :依赖文件   

 2. tab键+gcc命令 

即main文件由main.o add.o sub.o mul.o div.o main.h生成,用gcc编译得到main可执行文件                   

3.目标文件:依赖文件

4.tab键+gcc命令

即main.o由main.c生成,用gcc -c main.c生成main.o文件

由于make是从下面开始执行,所以从下面一次往上依次是.c文件到.o文件到可执行文件。

完成后即可使用make,一键编译,生成可执行文件,简便操作。

也可在makefile文件中执行其他操作:

.PHONY:clean   声明clean ,当执行make clean操作时,会执行后面的命令,但是若同目录下存在clean这个文件名,没有.PHONY 声明时,则默认对同名文件执行操作,不会进行命令。

当依赖文件过多时,可使用变量。用obj变量来指代依赖文件,编译时用$(obj)来编译 。如下图:

在makefile中,存在系统默认的自动化变量

$^:代表所有的依赖文件

$@:代表目标

$<:代表第一个依赖文件

如下图所示:

 

 Makefile中“#”字符后的内容被视作注释

@取消回显,当运行make时不再输出gcc -c 内容 

使用@之前:

使用@之后: 

 

  • 13
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值