[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