STAPEX

Section: Misc. Reference Manual Pages (3stap)
Index Return to Main Contents
 

NAME

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, x, odds[x])
  }
  foreach (x in evens-) {
    printf ("evens[%d] = %d, 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("%d, 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, 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 [aq]kernel.function("*")[aq]

To list the probeable functions and local variables in the kernel, use another listings mode.

% stap -L [aq]kernel.function("*")[aq]

 

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)


 

Index

NAME
LANGUAGE BASICS
PROBING
MORE EXAMPLES
SEE ALSO

This document was created by man2html, using the manual pages.
Time: 19:43:20 GMT, February 07, 2012