用于debuggingmakefile的工具

我有一个很大的遗留代码库,有非常复杂的makefile,有很多variables。 有时我需要改变它们,我发现要弄清楚为什么改变不能按我期望的方式进行。 我想find的是一个工具,它基本上是对“make”过程进行逐步debugging,在那里我将给它一个目录,我将能够看到不同variables的值在处理。 没有一个debugging标志似乎向我展示了我想要的东西,尽pipe可能我错过了一些东西。 有谁知道一个办法做到这一点?

你是否正在查看运行make -n的输出, make -np ,biggie make -nd

你使用的是相当新的gmake版本吗?

你有没有看过O'Reilly网站上关于debuggingMakefiles的免费一章,他们的书“使用GNU Makepipe理项目”( Amazon Link )。

我相信重拍就是你要找的东西。

从主页:

remake是GNU make实用工具的补丁和现代化版本,增加了改进的错误报告,以可理解的方式跟踪执行的能力以及debugging器。

它具有类似于gdb的界面,并且在(x)emacs中用mdb-mode来支持,这意味着breakponts,手表等等。如果你不喜欢(x)emacs

从make命令行选项的手册页:

 -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. 

我不知道有什么特定的标志完全符合你的要求,但是

  --print数据基 

听起来可能是有用的。

http://gmd.sf.net上有一个GNU makedebugging器项目,看起来相当有用。 gmd支持的主要function是断点化,这可能比步进更有用。 要使用这个,你可以从http://gmd.sf.net下载gmd,从http://gmsl.sf.net下载gmsl,在你的makefile中做一个'include gmd'。