DTraceProbes

A list of DTrace probes and their functionality. "Module" and "Function" cannot be defined in user defined probes (known as USDT), so they will not be specified. Probe definitions are in the format of:

provider:module:function:name(arguments)

Since module and function cannot be specified, they will be blank. An example probe definition for Ruby would then be:

ruby:::function-entry(class name, method name, file name, line number)

Where "ruby" is the provider name, module and function names are blank, the probe name is "function-entry", and the probe takes four arguments:

class name
method name
file name
line number
Ruby Probes List
Probe Stability
Before we list the specific probes, let's talk about stability. Probe stability is declared in the probes.d file at the bottom on the #pragma D attributes lines. Here is a description of each of the stability declarations.

Provider name stability
The provider name of "ruby" has been declared as stable. It is unlikely that we will change the provider name from "ruby" to something else.

Module and Function stability
Since we are not allowed to provide values for the module and function name, the values we have provided (no value) is declared as stable.

Probe name stability
The probe names are likely to change in the future, so they are marked as "Evolving". Consumers should not depend on these names to be stable.

Probe argument stability
The parameters passed to the probes are likely to change in the future, so they are marked as "Evolving". Consumers should not depend on these to be stable.

Declared probes
Probes are defined in the probes.d file. Here are the declared probes along with when they are fired and the arguments they take:

ruby:::function-entry(classname, methodname, filename, lineno);
This probe is fired just before a method is entered.

classname name of the class (a string)
methodname the method about to be executed (a string)
filename the file name where the method is being called (a string)
lineno the line number where the method is being called (an int)
ruby:::function-return(classname, methodname, filename, lineno);
This probe is fired just after a method has returned. The arguments are the same as "ruby:::function-entry".

ruby:::require-entry(requiredfile, filename, lineno);
This probe is fired on calls to rbrequiresafe (when a file is required).

requiredfile is the name of the file to be required (string)
filename is the file that called "require" (string)
lineno is the line number where the call to require was made (int)
ruby:::require-return(filename);
This probe is fired when require is returning.

filename the file that was required (string)
ruby:::load-entry(loadedfile, filename, lineno);
The probe is fired when calls to "load" are made. The arguments are the same as "ruby:::require-entry".

ruby:::load-return(filename);
This probe is fired when "load" returns. The arguments are the same as "ruby:::require-return".

ruby:::raise(classname, filename, lineno);
This probe is fired when an exception is raised.

classname is the class name of the raised exception (string)
filename the name of the file where the exception was raised (string)
lineno the line number in the file where the exception was raised (int)
ruby:::object-create-start(classname, filename, lineno);
This probe is fired when an object is about to be allocated.

classname the class of the allocated object (string)
filename the name of the file where the object is allocated (string)
lineno the line number in the file where the object is allocated (int)
ruby:::object-create-done(classname, filename, lineno);
This probe is fired when an object is done being allocated. It's arguments are the same as "ruby:::object-create-start".

ruby:::gc-begin();
This probe is fired when a GC phase is about to start. It takes no arguments.

ruby:::gc-end();
This probe is fired when a GC phase has ended. It takes no arguments.

ruby:::gc-mark-begin();
This probe is fired when a GC mark phase is about to start. It takes no arguments.

ruby:::gc-mark-end();
This probe is fired when a GC mark phase has ended. It takes no arguments.

ruby:::gc-sweep-begin();
This probe is fired when a GC sweep phase is about to start. It takes no arguments.

ruby:::gc-sweep-end();
This probe is fired when a GC sweep phase has ended. It takes no arguments.

ruby:::line(filename, lineno);
This probe is fired on every line of execution.

filename the file name where code is being executed
lineno the line number of the executed code