Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
D(7)			Miscellaneous Information Manual		  D(7)

NAME
       D -- DTrace scripting language overview

SYNOPSIS
       provider:module:function:name [[/predicate/] {action}]

DESCRIPTION
       D  is  the  dtrace(1) scripting language.  This manual provides a brief
       reference of the	D language and scripting.

       This manual page	serves as a short reference of the language.  Refer to
       books listed in "SEE ALSO" for a	complete reference.

PROBE'S	DESCRIPTION
       A probe's description consists of four elements:
	     provider:module:function:name

       The exact meaning of module, function, and name depends on provider.

USER-DEFINED VARIABLE TYPES
       Type	       Syntax
       global	       variable_name
       thread-local    self->variable_name
       clause-local    this->variable_name
       aggregate       @variable_name

       Tips:
       -   Always use the variable type	with the smallest  scope  to  minimize
	   processing overhead.
       -   Use	aggregate variables instead of global variables	when possible.
	   Aggregate variables are multi-CPU safe in contrast to global	 vari-
	   ables.

BUILT-IN VARIABLES
   Probe Arguments
       args[]		The array of typed probe arguments.

       arg0, ..., arg9	The  untyped probe arguments represented as 64-bit un-
			signed integers.  Only the  first  ten	arguments  are
			available this way.

   Probe Information
       epid	  The  enabled	probe  ID which	uniquely identifies an enabled
		  probe.  An enabled probe is defined by  its  probe  ID,  its
		  predicates, and its actions.

       id	  The  probe ID	which uniquely identifies a probe available to
		  DTrace.

       probeprov  The	  provider     in     the     probe's	   description
		  (provider:module:function:name) .

       probemod	  The	   module      in      the     probe's	   description
		  (provider:module:function:name) .

       probefunc  The	  function     in     the     probe's	   description
		  (provider:module:function:name) .

       probename  The	   name	     in	     the      probe's	   description
		  (provider:module:function:name) .

   Process Information
       execargs	 The	     process	     arguments.		  Effectively,
		 `curthread->td_proc->p_args'.

       execname	 The	name	of    the   current   process.	  Effectively,
		 `curthread->td_proc->p_comm'.

       gid	 The group ID of the current process.

       pid	 The process ID	of the current process.

       ppid	 The parent process ID of the current process.

       uid	 The user ID of	the current process.

   Thread Information
       uregs[]	    The	saved user-mode	register values.

       cpu	    The	ID of the current CPU.

       stackdepth   The	kernel stack frame depth.

       ustackdepth  The	userspace counterpart of stackdepth.

       tid	    The	thread ID.  Depending on the context, this can be  ei-
		    ther  the  ID  of  a  kernel  thread or a thread in	a user
		    process.

       errno	    The	errno(2) value of the last system  call	 performed  by
		    the	current	thread.

       curlwpsinfo  A  pointer to the lwpsinfo_t representation	of the current
		    thread.  Refer to dtrace_proc(4) for more details.

       curpsinfo    A pointer to the psinfo_t representation  of  the  current
		    process.  Refer to dtrace_proc(4) for more details.

       curthread    A  pointer	to the thread struct that is currently on-CPU.
		    E.g., `curthread->td_name' returns the thread  name.   The
		    <sys/proc.h>   header  documents  all  members  of	struct
		    thread.

       caller	    The	address	of the kernel thread instruction at  the  time
		    of execution of the	current	probe.

       ucaller	    The	userspace counterpart of caller.

   Timestamps
       timestamp      The number of nanoseconds	since boot.  Suitable for cal-
		      culating	relative  time differences of elapsed time and
		      latency.

       vtimestamp     The number of nanoseconds	that the current thread	 spent
		      on CPU.  The counter is not increased during handling of
		      a	fired DTrace probe.  Suitable for calculating relative
		      time differences of on-CPU time.

       walltimestamp  The    number    of    nanoseconds   since   the	 Epoch
		      (1970-01-01T00+00:00).  Suitable for timestamping	logs.

BUILT-IN FUNCTIONS
   Aggregation Functions
       avg(value)				     Average
       count()					     Count
       llquantize(value, factor, low, high, nsteps)  Log-linear	quantization
       lquantize(value,	low, high, nsteps)	     Linear quantization
       max(value)				     Maximum
       min(value)				     Minimum
       quantize(value)				     Power-of-two    frequency
						     distribution
       stddev(value)				     Standard deviation
       sum(value)				     Sum

   Kernel Destructive Functions
       By default, dtrace(1) does not permit the use of	destructive actions.

       breakpoint()	   Set a kernel	breakpoint and transfer	control	to the
			   ddb(4) kernel debugger.

       chill(nanoseconds)  Spin	 on  the  CPU  for  the	 specified  number  of
			   nanoseconds.

       panic()		   Panic the kernel.

FILES
       /usr/share/dtrace  DTrace scripts shipped with FreeBSD base.

SEE ALSO
       awk(1), dtrace(1), tracing(7)

       The illumos Dynamic Tracing  Guide,  https://illumos.org/books/dtrace/,
       2008.

       Brendan Gregg and Jim Mauro, DTrace: Dynamic Tracing in Oracle Solaris,
       Mac	 OS	  X	  and	    FreeBSD,	   Prentice	 Hall,
       https://www.brendangregg.com/dtracebook/, 2011.

       George Neville-Neil, Jonathan Anderson, Graeme Jenkinson, Brian Kidney,
       Domagoj Stolfa, Arun Thomas, and	Robert N.  M.  Watson,	Univeristy  of
       Cambridge  Computer  Laboratory,	 OpenDTrace Specification version 1.0,
       https://www.cl.cam.ac.uk/techreports/UCAM-CL-TR-924.pdf,	    Cambridge,
       United Kingdom, August 2018.

HISTORY
       This manual page	first appeared in FreeBSD 15.0.

AUTHORS
       This manual page	was written by Mateusz Piotrowski <0mp@FreeBSD.org>.

BUGS
       The cwd variable	which typically	provides the current working directory
       is not supported	on FreeBSD at the moment.

FreeBSD	15.0		      September	24, 2025			  D(7)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=d&sektion=7&manpath=FreeBSD+15.0-RELEASE+and+Ports>

home | help