[DTrace-devel] [PATCH v2] build: add gdb and valgrind support to the run-dtrace wrapper

Nick Alcock nick.alcock at oracle.com
Wed May 17 19:47:22 UTC 2023


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

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>
---
 cmd/Build | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/cmd/Build b/cmd/Build
index 644a3449d2ffc..be1514410d641 100644
--- a/cmd/Build
+++ b/cmd/Build
@@ -27,16 +27,24 @@ bpf_dump_LIBS = -lelf
 
 $(objdir)/run-dtrace: $(DTRACE)
 	printf > $@ "\
-#!/bin/sh\n\
+#!/bin/bash\n\
 # 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\
+    dtrace_cmd=$(objdir)/dtrace\n\
 else\n\
-    exec /usr/sbin/dtrace \"\$$@\"\n\
+    dtrace_cmd=/usr/sbin/dtrace\n\
+fi\n\
+\n\
+if [[ -n \$$DTRACE_GDB ]]; then\n\
+    exec gdb --args \$$dtrace_cmd \"\$$@\"\n\
+elif [[ -n \$$DTRACE_VALGRIND ]]; then\n\
+     exec valgrind \$$dtrace_cmd \"\$$@\"\n\
+else\n\
+     exec \$$dtrace_cmd \"\$$@\"\n\
 fi\n"
 	chmod a+x $(objdir)/run-dtrace
 

base-commit: f543fa6706c0b31364356c01bf3de63e3cce8ad1
prerequisite-patch-id: fa667248b7b02e92ee6b3807123ebcf2ac0acc38
prerequisite-patch-id: 0cec5f1a31d528a493d6143644c1e6b78c7f403b
-- 
2.39.1.268.g9de2f9a303




More information about the DTrace-devel mailing list