Phil Mayers wrote:
https://sourceware.org/systemtap/wiki/AddingUserSpaceProbingToApps
Looking at the page some more, here's my $0.02. - ignore the configure checks for sys/std.h, unless you're a masochist. Arran or I will get that going. For testing, you can just manually add #define entries to src/include/autoconf.h - I'd put the changes into src/include/log.c: /* * Catch brokenness */ #ifdef WITH_DTRACE_PROBES #ifndef HAVE_SYS_STD_H #undef WITH_DTRACE_PROBES #endif ... // typical pattern #ifdef HAVE_SYS_SDT_H #include <sys/sdt.h> #endif // create empty defines if they don't exist #ifndef WITH_DTRACE_PROBES #define DTRACE_PROBE(_x, _y) #define ... // anything else here to avoid #ifdef's in the code #endif For the actual probes, use: DTRACE_PROBE(progname, ...) Because "progname" is a global which is the base name of the binary. e.g. /usr/sbin/radiusd -> radiusd. That lets it automatically change the probe names if we want to run the server as "radrelay", for example. And then sprinkle the probes everywhere. I'd suggest src/main/modcall.c for the various modules. And src/main/threads.c for the queue / dequeue work. And src/main/process.c for the various state machine handling. I can then use dtrace on my Mac to debug performance issues. Nice! Alan DeKok.