You define DTrace probes in a .d
source file,
which is then used when compiling and linking your application.
First, select an appropriate name for your user application
provider. The provider name that you choose is appended with the
process identifier for each process that is executing your
application code. For example, if you chose the provider name
myserv
for a web server that was executing as
process ID 1203, the DTrace provider name that corresponds to
this process would be myserv1203
. In a
.d
source file, you would add a provider
definition similar to the one that is shown the following
example:
provider myserv { ... };
Next, add a definition for each probe and the corresponding
arguments. The following example defines the two probes that are
discussed in Section 13.1, “Choosing the Probe Points”. The first probe has
two arguments, both of type char *
. The
second probe has no arguments. The D compiler converts two
consecutive underscores (__
) to a dash
(-
) in the probe name:
provider myserv { probe query__receive(char *, char *); probe query__respond(); };
You can add stability attributes to your provider definition so that consumers of your probes understand the likelihood of change in future versions of your application. See Chapter 16, DTrace Stability Features for more information on DTrace stability attributes.
The following example illustrates how stability attributes are defined:
#pragma D attributes Evolving/Evolving/Common provider myserv provider #pragma D attributes Private/Private/Unknown provider myserv module #pragma D attributes Private/Private/Unknown provider myserv function #pragma D attributes Evolving/Evolving/Common provider myserv name #pragma D attributes Evolving/Evolving/Common provider myserv args provider myserv { probe query__receive(char *, char *); probe query__respond(); };