Provided by: systemtap-sdt-dev_2.3-1ubuntu1.4_all bug

NAME

       dtrace - Dtrace compatibile user application static probe generation tool.

SYNOPSIS

       dtrace -s file [OPTIONS]

DESCRIPTION

       The  dtrace command converts probe descriptions defined in file.d into a probe header file
       via the -h option or a probe description file via the -G option.

OPTIONS

       -h     generate a systemtap header file.

       -G     generate a systemtap probe definition object file.

       -o file
              is the name of the output file.  If the -G option is given  then  the  output  file
              will  be  called  file.o;  if  the  -h option is given then the output file will be
              called file.h.

       -C     run the cpp preprocessor on the input file when the -h option is given.

       -I file
              give this include path to cpp when the -C option is given.

       -k     keep temporary files, for example the C language source for the -G option.

       --types
              generate probe argument typedef information when the -h option is given.

EXAMPLES

       Systemtap is source compatible with dtrace user application static probe support.  Given a
       file test.d containing:
                provider sdt_probes
                {
                  probe test_0 (int type);
                  probe test_1 (struct astruct node);
                };
                struct astruct {int a; int b;};
       Then  the  command  "dtrace -s test.d -G" will create the probe definition file test.o and
       the command "dtrace -stest.d -h" will create the probe header file test.h Subsequently the
       application can use the generated macros this way:

         #include "test.h"
          ...
         struct astruct s;
          ...
         SDT_PROBES_TEST_0(value);
          ...
         if (SDT_PROBES_TEST_1_ENABLED())
             SDT_PROBES_TEST_1(expensive_function(s));

SEMAPHORES

       Semaphores  are  flag  variables  used  by probes as a way of bypassing potentially costly
       processing to prepare arguments for  probes  that  may  not  even  be  active.   They  are
       automatically  set/cleared by systemtap when a relevant script is running, so the argument
       setup cost is only paid when necessary.  These semaphore variables are defined within  the
       the "test.o" object file, which must therefore be linked into an application.

       Sometimes,  semaphore  variables are not necessary nor helpful.  Skipping them can simplfy
       the build process, by omitting the extra "test.o" file.  To skip dependence upon semaphore
       variables, include "<sys/sdt.h>" within the application before "test.h":

         #include <sys/sdt.h>
         #include "test.h"
          ...
         struct astruct s;
          ...
         SDT_PROBES_TEST_0(value);
          ...
         if (SDT_PROBES_TEST_1_ENABLED())
            SDT_PROBES_TEST_1(cheap_function(s));

       In this mode, the ENABLED() test is fixed at 1.

SEE ALSO

       stap(1) stappaths(7)

                                                                                        DTRACE(1)