[DTrace-devel] [PATCH 3/6] build: add gdb and valgrind support to the run-dtrace wrapper
Kris Van Hees
kris.van.hees at oracle.com
Mon May 15 18:00:45 UTC 2023
On Fri, May 12, 2023 at 10:19:04AM -0400, Kris Van Hees wrote:
> On Fri, May 12, 2023 at 10:07:40AM -0400, Kris Van Hees via DTrace-devel wrote:
> > On Wed, Apr 19, 2023 at 04:41:28PM +0100, Nick Alcock via DTrace-devel wrote:
> > > Now, rather than having to mess around setting SYSLIBDIR and
> > > LD_LIBRARY_PATH yourself to debug a just-built dtrace, you can
> > > just run DTRACE_GDB=t build/run-dtrace or
> > > DTRACE_VALGRIND=t build/run_dtrace
run_dtrace -> run-dtrace
> > >
> > > GDB is run with --args. Valgrind is run with no args other that the
> > > just-built dtrace's for now.
> > >
> > > Signed-off-by: Nick Alcock <nick.alcock at oracle.com>
> >
> > Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
>
> Actually, withdrawn... see below
>
> > ... with one change... THe run-dtrace script should now use
> >
> > #!/usr/bin/bash
> >
> > instead of
> >
> > #!/bin/sh
> >
> > because e.g. on Debian the default /bin/dh is *not* bash and you are now
> > using a bash construct.
>
> I was too hasty... In this patch you actually provide support for gdb
> and valgrind, but they make use of the *installed* dtrace even though
> the script puts the support for them in the not-installed codepath. That
> makes no sense.
>
> I'd suggest adding support for gdb and valgrind in *both* branches of the
> conditional, one for non-installed (i.e. in-tree) dtrace and one for
> installexd dtrace. Which you can then probably handle better by having the
> conditional handle the setting of the env vars and the full pathname for
> dtrace, and then further in the script simmply have the conditionals for
> gdb or valgrind (or neither) and invoke dtrace. Less duplication that way.
>
> > > ---
> > > cmd/Build | 12 +++++++++---
> > > 1 file changed, 9 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/cmd/Build b/cmd/Build
> > > index 644a3449d2ffc..b9c582a25ea8a 100644
> > > --- a/cmd/Build
> > > +++ b/cmd/Build
> > > @@ -31,12 +31,18 @@ $(objdir)/run-dtrace: $(DTRACE)
> > > # run-dtrace -- A wrapper to run DTrace out of the build tree, or from /usr/sbin\n\
> > > # if this is a check-installed run\n\
> > > \n\
> > > -if [ -z \$$_DTRACE_CHECK_INSTALLED ]; then\n\
> > > +if [[ -z \$$_DTRACE_CHECK_INSTALLED ]]; then\n\
> > > export DTRACE_OPT_SYSLIBDIR=$(objdir)/dlibs\n\
> > > export LD_LIBRARY_PATH=$(objdir)\n\
> > > - exec $(objdir)/dtrace \"\$$@\"\n\
> > > + if [[ -n \$$DTRACE_GDB ]]; then\n\
> > > + exec gdb --args /usr/sbin/dtrace \"\$$@\"\n\
> > > + elif [[ -n \$$DTRACE_VALGRIND ]]; then\n\
> > > + exec valgrind /usr/sbin/dtrace \"\$$@\"\n\
> > > + else\n\
> > > + exec $(objdir)/dtrace \"\$$@\"\n\
> > > + fi\n\
> > > else\n\
> > > - exec /usr/sbin/dtrace \"\$$@\"\n\
> > > + exec /usr/sbin/dtrace \"\$$@\"\n\
> > > fi\n"
> > > chmod a+x $(objdir)/run-dtrace
> > >
> > > --
> > > 2.39.1.268.g9de2f9a303
> > >
> > >
> > > _______________________________________________
> > > DTrace-devel mailing list
> > > DTrace-devel at oss.oracle.com
> > > https://oss.oracle.com/mailman/listinfo/dtrace-devel
> >
> > _______________________________________________
> > DTrace-devel mailing list
> > DTrace-devel at oss.oracle.com
> > https://oss.oracle.com/mailman/listinfo/dtrace-devel
More information about the DTrace-devel
mailing list