A few thoughts, mostly on the shell/recipe end of things:

- I find it interesting that there's no mention of -n which seems like a
bog-standard, POSIX-compliant, debugging method. It's also another way of
getting around @. Simplistic but worth mentioning IMHO.

- I wonder why there's so much emphasis on $(info ...) since $(warning ...)
will do the same job and also provide file:line so I prefer it for
debugging purposes.

- In terms of "why does make insist on rebuilding this target", which is
among the most common problems, ISTM that --debug=why or --trace is a
simpler option than any messing with '@'. It cuts right to the chase and
tells you what make is thinking.

- In an extreme case a user might want to try strace. E.g. create a script
like this

$ cat ~/bin/tracesh
#!/bin/sh
exec strace -o /tmp/${0##*/}.log -e trace=process,chdir -fq /bin/sh "$@"

And run make with SHELL=tracesh. To keep the strace log manageable the
SHELL assignment could be made target-specific.

- There's the old "Ask Mr Make" columns by John Graham-Cumming with a bunch
of clever (and advanced) debugging techniques but I don't know if those are
collected anywhere.

- You may not want to get into listing third-party tools, since there's
potentially no end to such a thing, but I've written something called the
Make Diagnostic Shell (https://github.com/boyski/mdsh) which can do a lot
of advanced analysis but only on the shell side of course, not the
make-syntax side. There may be any number of other third-party make-helper
tools.

David


On Sun, Aug 27, 2023 at 10:03 AM Alejandro Colomar <a...@kernel.org> wrote:

> Hi Paul,
>
> On 2023-08-27 15:52, Paul Smith wrote:
> > On Sun, 2023-08-27 at 15:47 +0200, Alejandro Colomar wrote:
> >> In fact, I'm going to define .SILENT always in the Linux man-pages,
> >> since V=1 is just an unnecessary duplicate for --degub=print.
> >> I'll make V=1 only have the effect of redirecting stderr of certain
> >> programs.
> >
> > Just be aware that --debug=print is a new feature as of GNU Make 4.4.
>
> Hmm.
>
> >
> > You shouldn't rely on users having access to it, unless you're willing
> > to recommend that version (or higher).
>
> Well, I'm the only one developing that Makefile.  I don't expect others
> to need it often, as long as I don't break it too badly.  And since I
> already require some latest versions of software for development,
> requiring make-4.4 is not too much of a stretch.  I can live with it.
>
> This reminded me that Debian still has make-4.3.  I've added the
> maintainer to the thread, in case they hadn't noticed that there was a
> new version.
>
> Cheers,
> Alex
>
> >
> > I reminded myself that the --trace option is a shortcut for
> > --debug=print,why and so I will rework all this help text to just
> > recommend this instead.  It gives you most of the information you would
> > want.
> >
>
> --
> <http://www.alejandro-colomar.es/>
> GPG key fingerprint: A9348594CE31283A826FBDD8D57633D441E25BB5
>
>

Reply via email to