Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

dtrace(1) [centos man page]

DTRACE(1)						      General Commands Manual							 DTRACE(1)

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 ap- plication. 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)

Check Out this Related Man Page

STAPEX(3stap)                                                                                                                        STAPEX(3stap)

stapex - systemtap examples LANGUAGE BASICS
These examples give a feel for basic systemtap syntax and control structures. global odds, evens probe begin { # "no" and "ne" are local integers for (i=0; i<10; i++) { if (i % 2) odds [no++] = i else evens [ne++] = i } delete odds[2] delete evens[3] exit () } probe end { foreach (x+ in odds) { printf ("odds[%d] = %d0, x, odds[x]) } foreach (x in evens-) { printf ("evens[%d] = %d0, x, evens[x]) } } This prints: odds[1] = 1 odds[3] = 5 odds[4] = 7 odds[5] = 9 evens[5] = 8 evens[4] = 6 evens[2] = 2 evens[1] = 0 Note that all variables types are inferred, and that all locals and globals are automatically initialized. This script prints the primes between 0 and 49. function isprime (x) { if (x < 2) return 0 for (i=2; i<x; i++) { if (x % i == 0) return 0 if (i * i > x) break } return 1 } probe begin { for (i=0; i<50; i++) if (isprime (i)) printf("%d0, i) exit() } This script demonstrates recursive functions. function fibonacci(i) { if (i < 1) error ("bad number") if (i == 1) return 1 if (i == 2) return 2 return fibonacci (i-1) + fibonacci (i-2) } probe begin { printf ("11th fibonacci number: %d0, fibonacci(11)) exit () } Any larger number may exceed the MAXACTION or MAXNESTING limits, and result in an error. PROBING
To trace entry and exit from a function, use a pair of probes: probe kernel.function("sys_mkdir") { println ("enter") } probe kernel.function("sys_mkdir").return { println ("exit") } To list the probeable functions in the kernel, use the listings mode. % stap -l 'kernel.function("*")' To list the probeable functions and local variables in the kernel, use another listings mode. % stap -L 'kernel.function("*")' MORE EXAMPLES
The directory to find more examples can be found in the stappaths(7) manual page. SEE ALSO
stap(1) stapprobes(3stap) stapfuncs(3stap) stappaths(7) STAPEX(3stap)
Man Page