logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

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] = %d\n", x, odds[x])
                }
                foreach (x in evens-) {
                  printf ("evens[%d] = %d\n", 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 initial‐
       ized.

       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("%d\n", 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: %d\n", fibonacci (11))
                exit ()
              }

       Any larger number may exceed the MAXACTION or MAXNESTING limits, and result in an error.

More Examples

       The directory to find more examples can be found  in  the  stappaths  (7)  manual  page,  and  online  at
       http://sourceware.org/systemtap/examples/

Name

       stapex - systemtap examples

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("*")'

See Also

stap(1)
       stapprobes(3stap)
       stappaths(7)

                                                                                                   STAPEX(3stap)

See Also