调试Makefile的工具

调试Makefile的工具

Tool for debugging makefiles

我有一个大型的旧版代码库,其中包含非常复杂的makefile和许多变量。 有时我需要更改它们,但我发现很难弄清为什么更改未按我期望的方式工作。 我想找到的是一个基本上可以对" make"过程进行逐步调试的工具,在这里可以给它一个目录,并且我可以在不同位置查看不同变量的值。 处理。 尽管可能会丢失某些内容,但所有要使的调试标志似乎都没有告诉我我想要什么。 有人知道这样做的方法吗?


您是否一直在查看运行make -nmake -np以及biggie make -nd的输出?

您是否正在使用gmake的较新版本?

您是否看过O'Reilly网站上免费的关于调试Makefile的章节,其中包含其出色的著作"使用GNU Make管理项目"(Amazon Link)。


我确定重拍是您想要的。

从首页:

remake is a patched and modernized version of GNU make utility that adds improved error reporting, the ability to trace execution in a comprehensible way, and a debugger.

它具有类似gdb的界面,并且(x)emacs中的mdb-mode支持,这意味着断点,手表等。如果您不喜欢(x)emacs,则还有DDD


在手册页上的make命令行选项中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
-n, --just-print, --dry-run, --recon  
Print the commands that would be executed, but do not execute them.  

-d  Print debugging information in addition to normal processing.  
The debugging information says  
which files are being considered for remaking,  
which file-times are being compared and with what results,  
which files actually need  to  be  remade,  
which implicit  rules are considered and which are applied---  
everything interesting about how make decides what to do.  

--debug[=FLAGS] Print debugging information in addition to normal processing.  
If the FLAGS are omitted, then the behaviour is the same as if -d was specified.  
FLAGS may be:  
'a' for all debugging output same as using -d,  
'b' for basic debugging,  
'v' for more verbose basic debugging,  
'i' for showing implicit rules,  
'j' for details on invocation of commands, and  
'm' for debugging while remaking makefiles.

我不知道有什么特定标志可以完全满足您的要求,但是

1
--print-data-base

听起来可能有用。


1
remake --debugger all

更多信息https://vimeo.com/97397484

https://github.com/rocky/remake/wiki/安装


在http://gmd.sf.net上有一个GNU make调试器项目,看起来很有用。 gmd支持的主要功能是断点,它可能比步进更有用。要使用此功能,请从http://gmd.sf.net下载gmd,从http://gmsl.sf.net下载gmsl,然后在makefile中执行" include gmd"。


推荐阅读