makefile 的调试

makefile 的调试


-d
打印出依赖


-n
打印出执行的命令, 但是尽可能不执行。本质上是打印第二阶段的执行命令。


-p 
执行的过程中,同时打印出数据库。打印第二阶段的命令的执行效果,和第一阶段的数据库。




normal command execution occurs here
# Make data base, printed on Thu Apr 29 20:58:13 2004
# Variables

# Directories

# Implicit Rules

# Pattern-specific variable values

# Files

# VPATH Search Paths


$(warning message) 
返回值是空字符串,可以附加在任何地方


$(error message)
同warning




-qp


-pn






1: 找出执行的是哪个目标,哪些目标target
make --debug=b


2: 找出执行的命令recipe
make -n


3: 打印出执行的数据库
make -p


4: 找出某个变量/函数的执行时刻
$(warning message)
$(error message)


5: 找出变量/函数的执行值
$(warning message $(var) )
$(error message $(var) )


6: 实际执行的target和rules
可以对比着
debugb.txt和database.txt看




makefile顺序


target: A B C
rules-to-make-target

A: a1 a2
rules-to-make-A

B: b1 b2
rules-to-make-B

C: c1 c2
rules-to-make-C

a1:
rule-a1

a2: 
rule-a2


b1: 
rule-b1

b2:
rule-b2

c1:
rule-c1


c2:
rule-c2

执行顺序


rule-a1
rule-a2
rules-to-make-A
rule-b1
rule-b2
rules-to-make-B
rule-c1
rule-c2
rules-to-make-C
rules-to-make-target




vim中对print data  base 的搜索


\(cd .* && make.*\|# Make data base, printed on.*\|# make\[.\]: Entering directory.*\|# make\[.\]: Leaving directory.*\)      




sed  -n -e '/# make\[.\]: Entering directory /p'  -e '/# make\[.\]: Leaving directory /p' -e '/cd .* && make /p' -e '/# Make data base, printed on/p' -e '/^make /p' p.txt 


查询 --debug=a日志中用到的全部target和makefile


VIM正则表达式

\(^Reading makefile `.*$\|Considering target file `.*$\|^.*$\nGNU Make 3\.80\|^make\[[0-9]\+\]: Entering directory `.*$\|^make\[[0-9]\+\]: Leaving directory `.*$\)




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值