bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Showing file/line number combinations when executing make


From: Paul Smith
Subject: Re: Showing file/line number combinations when executing make
Date: Sun, 29 Aug 2010 19:11:58 -0400

On Sun, 2010-08-29 at 14:13 -0400, Paul Smith wrote:
> On Sun, 2010-08-22 at 15:05 +0000, address@hidden wrote:
> > Quoting Edward Peschko <address@hidden>:
> > > My question - how do you actually trace this back to the target that  
> > >  generated this statement? In this case, the ghostscript Makefile is  
> > >  so convoluted that it goes through levels of indirection to get to   
> > > this point, so grep is of limited help here.
> > >
> > > So - why can't make add (optionally, of course) a line number/file   
> > > name combo to each of the statements that it executes - and as an   
> > > additional option show the text of the makefile that is executing at  
> > >  the time?
> > 
> > See recent thread:
> > http://lists.gnu.org/archive/html/bug-make/2010-07/msg00159.html
> > http://lists.gnu.org/archive/html/bug-make/2010-08/msg00002.html
> > 
> > Summary:
> > The feature you describe would indeed be a nice thing to add.
> > It's possible to simulate it at present if your make-files are nicely
> > written, but tiresome if you're dealing with someone else's make files
> > that didn't contemplate the need to do this.
> 
> In GNU make 3.82 if you enable "basic" debugging (that is, any level of
> debugging including --debug=b) you will see information on where the
> command was defined (makefile and linenumber); for example from a build
> of GNU make itself, with --debug=b:

I decided this was not so great.

I've implemented (in CVS now) a new flag, --trace, which does two
things: first, it always shows the complete recipe even for recipes that
are marked as silent.

Second, it shows a reference line for each rule that's run in the
standard GNU format:

        <filename>:<lineno>: update target `<target>' due to: $+

Or:

        <filename>:<lineno>: target `<target>' does not exist

For builtin rules, the filename/linenumber is replaced with "<builtin>".

This way, you can use tools that can parse the standard GNU output to
jump from place to place.

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://make.mad-scientist.net
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist




reply via email to

[Prev in Thread] Current Thread [Next in Thread]