用于调试makefile的工具

时间:2008-09-10 17:16:46

标签: debugging makefile

我有一个很大的遗留代码库,包含非常复杂的makefile,有很多变量。有时我需要改变它们,我发现很难弄清楚为什么改变不按照我的预期运作。我想找到的是一个基本上对“make”过程进行逐步调试的工具,我会给它一个目录,我将能够在不同的点看到不同变量的值。处理。没有任何调试标志似乎能告诉我我想要什么,虽然我可能会遗漏一些东西。有谁知道这样做的方法?

6 个答案:

答案 0 :(得分:61)

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

您使用的是gmake的最新版本吗?

您是否看过O'Reilly网站上有关Debugging Makefiles的免费章节,以获取他们出色的书“使用GNU Make管理项目”(Amazon Link)。

答案 1 :(得分:29)

我确信remake正是您所寻找的。

从主页:

  

重制是GNU make实用程序的修补和现代化版本,它增加了改进的错误报告,以易于理解的方式跟踪执行的能力以及调试器。

它有类似gdb的界面,并且在(x)emacs中受mdb-mode支持,这意味着破坏,手表等。如果你不喜欢(x)emacs,那就是DDD

答案 2 :(得分:15)

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

答案 3 :(得分:4)

我不知道任何特定的旗帜完全符合您的要求,但

--print-data-base
听起来可能有用。

答案 4 :(得分:2)

答案 5 :(得分:0)

http://gmd.sf.net有一个GNU make调试器项目,看起来非常有用。 gmd支持的主要功能是breakpointing,这可能比步进更有用。要使用此功能,请从http://gmd.sf.net下载gmd,从http://gmsl.sf.net下载gmsl,然后执行“gmd'在你的makefile中。