Probe context contains system state related to a fired probe, including:

  • Register values
  • Thread and process, which caused probe firing, including CPU where thread is running
  • Currently executing probe

Context is provided as built-in variables in DTrace such as execname or as tapset functions in SystemTap such as execname().

Userspace register values are available in DTrace through built-in variable uregs. In SystemTap, they available through Embedded C and kernel function task_pt_regs, or a special Embedded C variable CONTEXT, see for example implementation of uaddr() and print_regs() tapset functions.

Here are some useful context information:

Description DTrace SystemTap
Current executing thread curthread task_current()
ID of current thread tid tid()
ID of current process pid pid()
ID of parent of current process ppid ppid()
User ID and group ID of current process uid/gid uid()/gid(), euid(), egid()
Name of current process executable execname curpsinfo->ps_fname execname()
Command Line Arguments curpsinfo->ps_psargs cmdline_*()
CPU number cpu cpu()
Probe names probeprov, probemod, probefunc, probename pp(), pn(), ppfunc(), probefunc(), probemod()