Handbuch zur dynamischen Ablaufverfolgung in Solaris

Der Prüfpunkt END

Der Prüfpunkt END wird nach allen anderen Prüfpunkten ausgelöst. Bevor nicht alle anderen Prüfpunktklauseln abgeschlossen sind, wird dieser Prüfpunkt nicht ausgelöst. Dieser Prüfpunkt kann zum Verarbeiten von abgerufenen Statusinformationen oder zum Formatieren der Ausgabe verwendet werden. Deshalb finden wir im Prüfpunkt END häufig die Aktion printa. () Mit der Kombination aus den Prüfpunkten BEGIN und END lässt sich messen, wie viel Zeit insgesamt auf eine Ablaufverfolgung aufgewendet wird:

BEGIN
{
	start = timestamp;
}

/*
 * ... other tracing actions...
 */

END
{
	printf("total time: %d secs", (timestamp - start) / 1000000000);
}

Unter Datennormalisierung und printa() sind weitere übliche Verwendungszwecke des Prüfpunkts END beschrieben.

Ebenso wie für den Prüfpunkt BEGIN sind auch für END keine Argumente definiert. Der Kontext, in dem der Prüfpunkt END ausgelöst wird, ist beliebig und sollte nicht als verlässlich betrachtet werden.

Bei einer Ablaufverfolgung, für die die Option bufpolicy auf fill gesetzt ist, wird genügend Speicherplatz für etwaige Aufzeichnungen aus dem Prüfpunkt END reserviert. Ausführliche·Informationen finden Sie unter Die Richtlinie fill und END-Prüfpunkte.


Hinweis –

Die Aktion exit() bewirkt, dass die Ablaufverfolgung beendet wird und löst den Prüfpunkt END aus. Es kommt jedoch zu einer gewissen Verzögerung zwischen dem Aufruf der Aktion exit() und der Auslösung des Prüfpunkts END. Während dieser Verzögerung wird kein Prüfpunkt ausgelöst. Nachdem ein Prüfpunkt die Aktion exit() aufgerufen hat, wird der Prüfpunkt END erst dann ausgelöst, wenn der DTrace-Verbraucher feststellt, dass exit() aufgerufen wurde und die Ablaufverfolgung beendet. Mit der Option statusrate lässt sich festlegen, mit welcher Frequenz der Beendigungsstatus überprüft wird. Weitere Informationen finden Sie in Kapitel 16Optionen und Tunables .