DTrace Probes
Eine Liste von DTrace Probes und deren Funktionalität. „Modul“ und „Funktion“ können in benutzerdefinierten Probes (bekannt als USDT) nicht definiert werden, daher werden sie nicht angegeben. Probe-Definitionen sind im Format von
provider:module:function:name(arguments)
Da Modul und Funktion nicht angegeben werden können, bleiben sie leer. Eine Beispiel-Probe-Definition für Ruby wäre dann
ruby:::method-entry(class name, method name, file name, line number)
Wobei „ruby“ der Provider-Name ist, Modul- und Funktionsnamen leer sind, der Probe-Name „method-entry“ ist und die Probe vier Argumente hat
-
Klassenname
-
Methodenname
-
Dateiname
-
Zeilennummer
Probes-Liste
Stabilität
Bevor wir die spezifischen Probes auflisten, sprechen wir über Stabilität. Die Stabilität von Probes wird in der Datei probes.d am Ende der pragma D attributes Zeilen deklariert. Hier ist eine Beschreibung jeder Stabilitätsdeklaration.
- Stabilität des Provider-Namens
-
Der Provider-Name „ruby“ wurde als stabil deklariert. Es ist unwahrscheinlich, dass wir den Provider-Namen von „ruby“ in etwas anderes ändern.
- Stabilität von Modul und Funktion
-
Da wir keine Werte für Modul- und Funktionsnamen angeben dürfen, ist der von uns bereitgestellte Wert (kein Wert) als stabil deklariert.
- Stabilität des Probe-Namens
-
Die Probe-Namen können sich in Zukunft ändern, daher sind sie als „Evolving“ markiert. Verbraucher sollten sich nicht darauf verlassen, dass diese Namen stabil sind.
- Stabilität der Probe-Argumente
-
Die an die Probes übergebenen Parameter können sich in Zukunft ändern, daher sind sie als „Evolving“ markiert. Verbraucher sollten sich nicht darauf verlassen, dass diese stabil sind.
Deklarierte Probes
Probes werden in der Datei probes.d definiert. Hier sind die deklarierten Probes zusammen mit dem Zeitpunkt, an dem sie ausgelöst werden, und den Argumenten, die sie entgegennehmen.
- ruby:::method-entry(classname, methodname, filename, lineno);
-
Diese Probe wird kurz vor dem Eintritt in eine Methode ausgelöst.
- Klassenname
-
Name der Klasse (ein String)
- Methodenname
-
Name der auszuführenden Methode (ein String)
- Dateiname
-
der Dateiname, in dem die Methode _aufgerufen wird_ (ein String)
- Zeilennummer
-
die Zeilennummer, an der die Methode _aufgerufen wird_ (ein Int)
HINWEIS: Wird nur ausgelöst, wenn das Tracing aktiviert ist, z. B. mit:
TracePoint.new{}.enable. Weitere Details finden Sie unter Feature#14104. - ruby:::method-return(classname, methodname, filename, lineno);
-
Diese Probe wird kurz nach der Rückkehr einer Methode ausgelöst. Die Argumente sind dieselben wie bei „ruby:::method-entry“.
HINWEIS: Wird nur ausgelöst, wenn das Tracing aktiviert ist, z. B. mit:
TracePoint.new{}.enable. Weitere Details finden Sie unter Feature#14104. - ruby:::cmethod-entry(classname, methodname, filename, lineno);
-
Diese Probe wird kurz vor dem Eintritt in eine C-Methode ausgelöst. Die Argumente sind dieselben wie bei „ruby:::method-entry“.
- ruby:::cmethod-return(classname, methodname, filename, lineno);
-
Diese Probe wird kurz vor der Rückkehr einer C-Methode ausgelöst. Die Argumente sind dieselben wie bei „ruby:::method-entry“.
- ruby:::require-entry(requiredfile, filename, lineno);
-
Diese Probe wird bei Aufrufen von rb_require_safe ausgelöst (wenn eine Datei angefordert wird).
- angeforderte Datei
-
der Name der anzufordernden Datei (String).
- Dateiname
-
die Datei, die „
require“ aufgerufen hat (String). - Zeilennummer
-
die Zeilennummer, an der der Aufruf von require erfolgte (Int).
- ruby:::require-return(requiredfile, filename, lineno);
-
Diese Probe wird kurz vor der Rückkehr von rb_require_safe ausgelöst (wenn eine Datei angefordert wird). Die Argumente sind dieselben wie bei „ruby:::require-entry“. Diese Probe wird nicht ausgelöst, wenn während der Dateianforderung eine Ausnahme auftritt.
- ruby:::find-require-entry(requiredfile, filename, lineno);
-
Diese Probe wird kurz vor dem Aufruf von search_required ausgelöst. search_required bestimmt, ob die Datei bereits angefordert wurde, indem die geladenen Features (
$") durchsucht werden, und ermittelt andernfalls, welche Datei geladen werden muss.- angeforderte Datei
-
die anzufordernde Datei (String).
- Dateiname
-
die Datei, die „require“ aufgerufen hat (String).
- Zeilennummer
-
die Zeilennummer, an der der Aufruf von require erfolgte (Int).
- ruby:::find-require-return(requiredfile, filename, lineno);
-
Diese Probe wird kurz nach der Rückkehr von search_required ausgelöst. Weitere Details finden Sie in der Dokumentation für „ruby:::find-require-entry“. Die Argumente für diese Probe sind dieselben wie bei „ruby:::find-require-entry“.
- ruby:::load-entry(loadedfile, filename, lineno);
-
Diese Probe wird ausgelöst, wenn Aufrufe von „load“ erfolgen. Die Argumente sind dieselben wie bei „ruby:::require-entry“.
- ruby:::load-return(loadedfile, filename, lineno);
-
Diese Probe wird ausgelöst, wenn „load“ zurückkehrt. Die Argumente sind dieselben wie bei „ruby:::load-entry“.
- ruby:::raise(classname, filename, lineno);
-
Diese Probe wird ausgelöst, wenn eine Ausnahme ausgelöst wird.
- Klassenname
-
der Klassenname der ausgelösten Ausnahme (String)
- Dateiname
-
der Dateiname, in dem die Ausnahme ausgelöst wurde (String)
- Zeilennummer
-
die Zeilennummer in der Datei, in der die Ausnahme ausgelöst wurde (Int)
- ruby:::object-create(classname, filename, lineno);
-
Diese Probe wird ausgelöst, wenn ein Objekt zugewiesen werden soll.
- Klassenname
-
die Klasse des zugewiesenen Objekts (String)
- Dateiname
-
der Dateiname, in dem das Objekt zugewiesen wird (String)
- Zeilennummer
-
die Zeilennummer in der Datei, in der das Objekt zugewiesen wird (Int)
- ruby:::array-create(length, filename, lineno);
-
Diese Probe wird ausgelöst, wenn ein
Arrayzugewiesen werden soll.- Länge
-
die Größe des Arrays (Long)
- Dateiname
-
der Dateiname, in dem das Array zugewiesen wird (String)
- Zeilennummer
-
die Zeilennummer in der Datei, in der das Array zugewiesen wird (Int)
- ruby:::hash-create(length, filename, lineno);
-
Diese Probe wird ausgelöst, wenn ein
Hashzugewiesen werden soll.- Länge
-
die Größe des Hashs (Long)
- Dateiname
-
der Dateiname, in dem der Hash zugewiesen wird (String)
- Zeilennummer
-
die Zeilennummer in der Datei, in der der Hash zugewiesen wird (Int)
- ruby:::string-create(length, filename, lineno);
-
Diese Probe wird ausgelöst, wenn ein
Stringzugewiesen werden soll.- Länge
-
die Größe des Strings (Long)
- Dateiname
-
der Dateiname, in dem der String zugewiesen wird (String)
- Zeilennummer
-
die Zeilennummer in der Datei, in der der String zugewiesen wird (Int)
- ruby:::symbol-create(str, filename, lineno);
-
Diese Probe wird ausgelöst, wenn ein
Symbolzugewiesen werden soll.- str
-
der Inhalt des Symbols (String)
- Dateiname
-
der Dateiname, in dem der String zugewiesen wird (String)
- Zeilennummer
-
die Zeilennummer in der Datei, in der der String zugewiesen wird (Int)
- ruby:::parse-begin(sourcefile, lineno);
-
Wird kurz vor dem Parsen und Kompilieren einer Quelldatei ausgelöst.
- Quelldatei
-
die zu parsendende Datei (String)
- Zeilennummer
-
die Zeilennummer, an der die Quelle beginnt (Int)
- ruby:::parse-end(sourcefile, lineno);
-
Wird kurz nach dem Parsen und Kompilieren einer Quelldatei ausgelöst.
- Quelldatei
-
die zu parsendende Datei (String)
- Zeilennummer
-
die Zeilennummer, an der die Quelle endet (Int)
- ruby:::gc-mark-begin();
-
Wird zu Beginn einer Markierungsphase ausgelöst.
- ruby:::gc-mark-end();
-
Wird am Ende einer Markierungsphase ausgelöst.
- ruby:::gc-sweep-begin();
-
Wird zu Beginn einer Sweep-Phase ausgelöst.
- ruby:::gc-sweep-end();
-
Wird am Ende einer Sweep-Phase ausgelöst.
- ruby:::method-cache-clear(class, sourcefile, lineno);
-
Wird ausgelöst, wenn der Methodencache geleert wird.
- Klasse
-
der zu leerende Klassenname oder „global“ (String)
- Quelldatei
-
die zu parsendende Datei (String)
- Zeilennummer
-
die Zeilennummer, an der die Quelle endet (Int)