Handbuch zur dynamischen Ablaufverfolgung in Solaris

Prüfpunktbeschreibungen

Jede D-Programmklausel beginnt mit einer Liste von einer oder mehreren Prüfpunktbeschreibungen in der üblichen Form:

Provider:Modul: Funktion:Name

Wenn eines oder mehrere Felder der Prüfpunktbeschreibung ausgelassen wird, werden die angegebenen Felder vom D-Compiler von rechts nach links interpretiert. So würde beispielsweise die Prüfpunktbeschreibung foo:bar unabhängig von dem Wert der Provider- und Modulfelder auf einen Prüfpunkt mit der Funktion foo und dem Namen bar zutreffen. Aus diesem Grund ist eine Prüfpunktbeschreibung tatsächlich eher als ein Muster zu betrachten, das zur Bezugnahme auf einen oder mehrere Prüfpunkte anhand ihrer Namen dient.

Es empfiehlt sich, in der D-Prüfpunktbeschreibung alle vier Feldtrenner zu verwenden, sodass Sie auf der linken Seite den gewünschten Provider angeben können. Bei Verzicht auf die Angabe eines Providers erhalten Sie möglicherweise unerwartete Resultate, wenn mehrere Provider Prüfpunkte mit demselben Namen veröffentlichen. Ebenso ist es nicht auszuschließen, dass zukünftige Versionen von DTrace neue Provider enthalten, deren Prüfpunkte zufällig mit den von Ihnen nur teilweise angegebenen Prüfpunktbeschreibungen übereinstimmen. Um einen Provider mit all seinen Prüfpunkten anzugeben, lassen Sie die Modul-, Funktions- und Namensfelder leer. So können Sie beispielsweise mit der Beschreibung syscall::: jeden von dem DTrace-Provider syscall veröffentlichten Prüfpunkt ansprechen.

Prüfpunktbeschreibungen unterstützen auch eine Mustervergleichssyntax wie die in sh(1) beschriebene Globbing-Syntax. Bevor DTrace einen Prüfpunkt für eine Beschreibung einsetzt, werden alle Beschreibungsfelder nach den Zeichen *, ? und [ durchsucht. Wenn eines dieser Zeichen in einem Feld der Prüfpunktbeschreibung ohne vorangestelltes \-Zeichen vorkommt, wird das Feld als Suchmuster interpretiert. Das Beschreibungsmuster muss mit dem gesamten entsprechenden Feld eines gegebenen Prüfpunkts übereinstimmen. Um einen Prüfpunkt erfolgreich zu identifizieren und zu aktivieren, muss die vollständige Prüfpunktbeschreibung in jedem Feld übereinstimmen. Ein Prüfpunktbeschreibungsfeld, bei dem es sich nicht um ein Suchmuster handelt, muss exakt mit dem entsprechenden Feld des Prüfpunkts übereinstimmen. Leere Beschreibungsfelder treffen auf alle Prüfpunkte zu.

In Suchmustern für Prüfpunktnamen werden die Sonderzeichen in folgender Tabelle erkannt:

Tabelle 4–1 Mustervergleichszeichen für Prüfpunktnamen

Symbol 

Beschreibung 

*

Trifft auf jede Zeichenkette einschließlich der Null-Zeichenkette zu. 

?

Trifft auf jedes Einzelzeichen zu. 

[ ... ]

Trifft auf jedes der eingeklammerten Zeichen zu. Ein durch - getrenntes Zeichenpaar trifft auf jedes Zeichen zwischen den beiden Zeichen (einschließlich dieser) zu. Wenn das erste Zeichen nach der öffnenden Klammer [ ein ! ist, besteht Übereinstimmung mit allen nicht im Satz enthaltenen Zeichen.

\

Das nächste Zeichen wird ohne Sonderbedeutung in seiner normalen Bedeutung interpretiert. 

Mustervergleichszeichen können in beliebigen oder allen vier Feldern einer Prüfpunktbeschreibung verwendet werden. Mit dtrace - l können Sie Suchmuster für übereinstimmende Prüfpunkte auch in der Befehlszeile angeben. Beispielsweise listet der Befehl dtrace -l -f kmem_* alle DTrace-Prüfpunkte in Funktionen auf, deren Namen mit dem Präfix kmem_ beginnen.

Wenn Sie dasselbe Prädikat und dieselben Aktionen für mehrere Prüfpunktbeschreibungen oder Beschreibungsmuster angeben möchten, können Sie die Beschreibungen durch Kommata getrennt auflisten. So würde beispielsweise das folgende D-Programm bei jeder Auslösung von Prüfpunkten im Zusammenhang mit dem Eintritt in Systemaufrufe, die die Wörter „lwp” oder „sock” enthalten, eine Zeitmarke protokollieren:

syscall::*lwp*:entry, syscall::*sock*:entry
{
	trace(timestamp);
}

Prüfpunkte können in Prüfpunktbeschreibungen auch anhand ihrer ganzzahligen Prüfpunkt-ID angegeben werden. So kann beispielsweise mit der Klausel:

12345
{
	trace(timestamp);
}

der Prüfpunkt mit der ID 12345, der von dtrace -l -i 12345 gemeldet wird, aktiviert werden. Fügen Sie in Ihre D-Programme stets vom Menschen lesbare Prüfpunktbeschreibungen ein. Numerische Prüfpunkt-IDs bleiben über das Einladen und Entfernen der DTrace-Provider-Kernelmodule hinweg oder nach einem Systemneustart möglicherweise nicht unverändert bestehen.