Handbuch zur dynamischen Ablaufverfolgung in Solaris

Kapitel 41 Versionsverwaltung

In Kapitel 39Stabilität haben wir die DTrace-Leistungsmerkmale zum Ermitteln der Stabilitätsattribute Ihrer D-Programme kennen gelernt. Nachdem Sie ein D-Programm mit den geeigneten Stabilitätsattributen erstellt haben, möchten Sie das Programm mitunter auch an eine bestimmte Version der D-Programmierschnittstelle binden. Die D-Schnittstellenversion besteht in einem Bezeichner, der einem bestimmten Satz durch den D-Compiler bereitgestellter Typen, Variablen, Funktionen, Konstanten und Übersetzern anhaftet. Indem Sie eine Bindung an eine spezifische Version der D-Programmschnittstelle angeben, sorgen Sie dafür, dass Sie Ihr Programm auf künftigen Versionen von DTrace neu kompilieren können, ohne Konflikte zwischen von Ihnen definierten Programmnamen und in künftigen Versionen der D-Programmierschnittstelle definierten Namen befürchten zu müssen. Es empfiehlt sich, für jedes D-Programm, das als dauerhaftes Skript installiert (siehe Kapitel 15Scripting) oder in mehrschichtigen Tools verwendet werden soll, eine Versionsbindung festzulegen.

Versionen und Versionsnummern

Gruppen von Typen, Variablen, Funktionen, Konstanten und Übersetzern einer bestimmten Softwareversion werden vom D-Compiler mit einer Versionszeichenkette bezeichnet. Versionszeichenketten sind Folgen durch Punkte getrennter Dezimalzahlen in der Form „x” (Hauptversionen), „x.y” (Unterversionen) oder „x.y.z” (Micro-Version). Für einen Versionsvergleich werden die Ziffern von links nach rechts miteinander verglichen. Stimmen die am weitesten links stehenden Zahlen nicht überein, gibt die Zeichenkette mit der höheren Zahl die höhere (und somit neuere) Version an. Stimmen die Zahlen an linker Stelle überein, fährt der Vergleich von links nach rechts mit der nächsten Zahl fort, bis das Ergebnis feststeht. Alle unbestimmten Zahlen in einer Versionszeichenkette werden bei einem Versionsvergleich als Null interpretiert.

Die DTrace-Versionszeichenketten entsprechen der in attributes(5) beschriebenen Sun-Standardnomenklatur für Schnittstellenversionen. Eine Änderung der D-Programmierschnittstelle schlägt sich in einer neuen Versionszeichenkette nieder. In der folgenden Tabelle sind die von DTrace verwendeten Versionszeichenketten und die allgemeine Bedeutung der entsprechenden DTrace-Software-Version zusammengefasst.

Tabelle 41–1 DTrace-Versionen und Versionsnummern

Version 

Versionsnummer 

Bedeutung 

Hauptversion 

x.0

Eine Hauptversion enthält im Allgemeinen eine Reihe neuer Leistungsmerkmale; hält andere, möglicherweise inkompatible Standard-Revisionen ein; und kann - auch wenn dies unwahrscheinlich ist - geänderte Schnittstellen des Typs „Standard“ oder „Stable“ (siehe Kapitel 39Stabilität) oder Ersatzschnittstellen für diese enthalten oder um solche gekürzt sein. Die erste Version der D-Programmierschnittstelle wurde als Version 1.0 bezeichnet.

Unterversion 

x.y

Im Vergleich zu einer x.0 oder früheren Version (wobei y nicht Null ist) enthält eine neue Unterversion wahrscheinlich weniger neue Leistungsmerkmale, kompatible „Standard“- und „Stable“-Schnittstellen, möglicherweise inkompatible „Evolving“-Schnittstellen oder inkompatible Schnittstellen des Typs „Unstable“. Diese Änderungen können neue integrierte D-Typen, -Variablen, -Funktionen, -Konstanten und -Übersetzer umfassen. Darüber hinaus kann in einer Unterversion die Unterstützung für zuvor als „Obsolete“ gekennzeichnete Schnittstellen beendet werden (siehe Kapitel 39Stabilität).

Micro-Version 

x.y.z

Micro-Versionen sind auf Kompatibilität mit den Schnittstellen der vorigen Version (wobei z nicht Null ist) ausgerichtet und enthalten wahrscheinlich Fehlerkorrekturen, Leistungsverbesserungen und Unterstützung für zusätzliche Hardware. 

Im Allgemeinen bietet jede neue Version der D-Programmierschnittstelle eine Obergruppe der Fähigkeiten der vorherigen Version abzüglich etwaiger zuvor als „Obsolete“ gekennzeichneter Schnittstellen, die dann entfernt wurden.

Optionen für die Versionsverwaltung

Standardmäßig werden alle mit dtrace - s kompilierten oder mit den dtrace-Befehlszeilenoptionen -P, - m, -f, -n oder -i angegebenen D-Programme an die neueste D-Programmierschnittstelle gebunden, die der D-Compiler bereitstellt. Die aktuelle Version der D-Programmierschnittstelle lässt sich mit der dtrace-Option -V ermitteln:


$ dtrace -V
dtrace: Sun D 1.0
$

Wenn Sie eine Bindung an eine bestimmte Version der D-Programmierschnittstelle festlegen möchten, können Sie die Option version auf eine geeignete Versionszeichenkette setzen. Ähnlich wie die DTrace-Optionen (siehe Kapitel 16Optionen und Tunables ) kann die Versionsoption entweder mit dtrace -x in der Befehlszeile gesetzt:


# dtrace -x version=1.0 -n 'BEGIN{trace("hello");}'

oder mithilfe der Syntax #pragma D option in der D-Programmquelldatei festgelegt werden:

#pragma D option version=1.0

BEGIN
{
	trace("hello");
}

Bei der Anforderung einer Versionsbindung anhand der Syntax #pragma D option muss diese Direktive an den Anfang der D-Programmdatei vor jede Deklaration oder Prüfpunktklausel gesetzt werden. Wenn das Argument für die Versionsbindung keiner gültigen Versionszeichenkette entspricht oder sich auf eine Version bezieht, die nicht vom D-Compiler zur Verfügung gestellt wird, erscheint eine entsprechende Fehlermeldung und die Kompilierung schlägt fehl. Folglich können Sie mithilfe der Versionsbindungseinrichtung auch bewirken, dass die Ausführung eines D-Skripts auf einer älteren Version von DTrace mit einer eindeutigen Fehlermeldung scheitert.

Bevor der D-Compiler die Programmdeklarationen und Klauseln kompiliert, lädt er die D-Typen, -Funktionen, -Konstanten und -Übersetzer für die entsprechende Schnittstellenversion in den eigenen Namensraum ein. Die Optionen für die Versionsbindung, die Sie angeben, bestimmen also einfach, welche Namens-, Typ- und Übersetzersätze zusätzlich zu den in Ihrem Programm definierten Variablen, Typen und Übersetzern für das Programm sichtbar sind. Durch die Versionsbindung wird verhindert, dass der D-Compiler neuere Schnittstellen einlädt, die möglicherweise mit den Deklarationen in Ihrem Programmquellcode unvereinbare Namen oder Übersetzer definieren und folglich einen Kompilierungsfehler verursachen würden. Unter Bezeichnernamen und Schlüsselwörter finden Sie Tipps für die Wahl von Bezeichnernamen, die einen gewissen Schutz vor Konflikten mit Schnittstellen in künftigen Versionen von DTrace bieten.

Versionsverwaltung für Provider

Anders als Schnittstellen, die der D-Compiler zur Verfügung stellt, stehen die von DTrace bereitgestellten Provider (d. h. Prüfpunkte und Prüfpunktargumente) in keinem Zusammenhang mit der D-Programmierschnittstelle oder den oben beschriebenen Optionen für die Versionsbindung. Welche Provider-Schnittstellen zur Verfügung stehen, wird beim Laden der kompilierten Instrumentierung in die DTrace-Software im Betriebssystemkernel bestimmt. Sie hängen von der jeweiligen Befehlssatzarchitektur, der Betriebsplattform, dem Prozessor, der auf dem Solaris-System installierten Software und den aktuellen Zugriffsrechten ab. Die in Ihren D-Programmklauseln vereinbarten Prüfpunkte werden vom D-Compiler und der DTrace-Laufzeit untersucht. Wenn in Ihrem D-Programm angeforderte Prüfpunkte nicht verfügbar sind, werden entsprechende Fehlermeldungen ausgegeben. Diese Leistungsmerkmale stehen in keinem linearen Zusammenhang mit der Version der D-Programmierschnittstelle, da DTrace-Provider keine Schnittstellen exportieren, die mit Definitionen in Ihren D-Programmen in Konflikt treten können. Das heißt, Sie können Prüfpunkte in D nur aktivieren, nicht aber definieren, und Prüfpunktnamen werden getrennt von anderen D-Programmbezeichnern in anderen Namensräumen geführt.

DTrace-Provider werden mit einer bestimmten Version von Solaris geliefert und in der entsprechenden Version des Handbuchs zur dynamischen Ablaufverfolgung in Solaris beschrieben. In den Kapiteln dieses Handbuchs, die sich mit den einzelnen Providern befassen, werden außerdem relevante Änderungen des jeweiligen Providers oder neue Leistungsmerkmale erläutert, die er zur Verfügung stellt. Mit der dtrace-Option -l können Sie den Satz der auf einem Solaris-System verfügbaren Provider und Prüfpunkte prüfen. Die Schnittstellen eines Providers sind durch die DTrace-Stabilitätsattribute bezeichnet, sodass Sie mithilfe der DTrace-Leistungsmerkmale für die Ausgabe eines Stabilitätsberichts (siehe Kapitel 39Stabilität) feststellen können, wie wahrscheinlich es ist, dass die Provider-Schnittstellen, die in Ihrem D-Programm zum Einsatz kommen, in künftigen Solaris-Versionen verändert oder überhaupt nicht mehr enthalten sein werden.