82

我有一个大型遗留代码库,其中包含非常复杂的生成文件,并且有很多变量。有时我需要更改它们,我发现很难弄清楚为什么更改没有按我预期的方式进行。我想找到的是一个工具,它基本上可以对“make”过程进行逐步调试,我会给它一个目录,我将能够在不同点看到不同变量的值过程。没有一个调试标志似乎向我展示了我想要的东西,尽管我可能遗漏了一些东西。有谁知道这样做的方法?

4

6 回答 6

75

您是否一直在查看运行make -nandmake -np和 biggie的输出make -nd

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

您是否查看过O'Reilly 网站上关于调试 Makefile的免费章节,以获取他们的优秀著作“使用 GNU Make 管理项目”(亚马​​逊链接)。

于 2008-09-10T17:22:44.107 回答
38

我敢肯定,翻拍是你正在寻找的。

从主页:

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

它具有类似 gdb 的界面,并受 (x)emacs 中的 mdb-mode 支持,这意味着断点、监视等。 如果您不喜欢 (x)emacs,则可以使用DDD

于 2008-11-24T09:45:26.847 回答
22

从 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.  
于 2013-03-20T11:33:55.003 回答
5

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

--打印数据库
听起来它可能有用。

于 2008-09-10T17:28:45.497 回答
4
remake --debugger all

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

https://github.com/rocky/remake/wiki/Installing

于 2019-09-11T08:12:50.850 回答
0

http://gmd.sf.net上有一个 GNU make 调试器项目,看起来非常有用。gmd 支持的主要功能是断点,它可能比单步更有用。要使用它,您从 http://gmd.sf.net 下载 gmd 并从http://gmsl.sf.net下载gmsl,然后在您的 makefile 中执行“包含 gmd”。

于 2014-08-14T15:22:44.327 回答