Handbuch zur dynamischen Ablaufverfolgung in Solaris

Umwandlungsformate

Mit jeder Folge von Umwandlungszeichen werden null oder mehr Argumente abgerufen. Wenn der Format-Zeichenkette nicht genügend Argumente geliefert werden oder am Ende der Format-Zeichenkette weitere Argumente übrig bleiben, gibt der D-Compiler eine entsprechende Fehlermeldung aus. Bei Angabe eines undefinierten Umwandlungsformats gibt der D-Compiler ebenfalls eine Fehlermeldung aus. Die Umwandlungszeichenfolgen lauten:

a

Der Zeiger oder das uintptr_t-Argument wird als Kernelsymbolname in der Form Modul`Symbolname plus einem optionalen hexadezimalen Byte-Abstand ausgegeben. Sollte der Wert nicht in den durch ein bekanntes Kernelsymbol definierten Bereich fallen, wird er als hexadezimale Ganzzahl ausgegeben.

c

Das Argument des Typs char, short oder int wird als ASCII-Zeichen ausgegeben.

C

Das Argument des Typs char, short oder int wird als ASCII-Zeichen ausgegeben, sofern es sich um ein druckbares ASCII-Zeichen handelt. Ist dies nicht der Fall, wird das Zeichen mit der entsprechenden Ersatzdarstellung (siehe Tabelle 2–5) ausgegeben.

d

Das Argument des Typs char, short, int, long oder long long wird als dezimale Ganzzahl (Grundzahl 10) ausgegeben. Wenn das Argument signed ist, wird es als Wert mit Vorzeichen ausgegeben. Wenn das Argument unsigned ist, wird es als vorzeichenloser Wert ausgegeben. Diese Umwandlung ist gleichbedeutend mit i.

e, E

Das Argument des Typs float, double oder long double wird in den Stil [-]d.ddddd umgewandelt, wobei vor dem Dezimalzeichen eine Stelle steht und die Anzahl der Stellen dahinter die Genauigkeit angibt. Das Dezimalzeichen ist nicht Null, wenn das Argument nicht Null ist. Wenn kein Genauigkeitswert angegeben wird, beträgt er standardmäßig 6. Wenn die Genauigkeit 0 beträgt und das #-Flag nicht angegeben wurde, wird kein Dezimalzeichen angezeigt. Das Umwandlungsformat E ergibt eine Zahl, in der die Hochzahl nicht mit e, sondern mit E eingeführt wird. Die Hochzahl enthält stets mindestens zwei Stellen. Der Wert wird auf die geeignete Stellenanzahl aufgerundet.

f

Das Argument des Typs float, double oder long double wird in den Stil [-]ddd. ddd umgewandelt, wobei die Anzahl der Stellen hinter dem Dezimalzeichen die Genauigkeit angibt. Wenn kein Genauigkeitswert angegeben wird, beträgt er standardmäßig 6. Wenn die Genauigkeit 0 beträgt und das #-Flag nicht angegeben wurde, wird kein Dezimalzeichen angezeigt. Wenn ein Dezimalzeichen erscheint, steht davor mindestens eine Stelle. Der Wert wird auf die geeignete Stellenanzahl aufgerundet.

g, G

Das Argument des Typs float, double oder long double wird im Stil f oder e (oder im Stil E bei Verwendung des Umwandlungszeichens G) ausgegeben, wobei die Genauigkeit die Anzahl der signifikanten Stellen angibt. Eine explizite Genauigkeit von 0 wird als 1 interpretiert. Der jeweilige Stil hängt von dem Wert ab, der umgewandelt wird: Stil e (oder E) wird nur verwendet, wenn der aus der Umwandlung resultierende Exponent kleiner als -4 oder nicht kleiner als die Genauigkeit ist. Nullen am Schluss werden aus dem Bruchteil des Ergebnisses entfernt. Ein Dezimalzeichen erscheint nur, wenn darauf eine Stelle folgt. Wenn das Flag # angegeben wurde, werden Nullen am Schluss nicht aus dem Ergebnis entfernt.

i

Das Argument des Typs char, short, int, long oder long long wird als dezimale Ganzzahl (Grundzahl 10) ausgegeben. Wenn das Argument signed ist, wird es als Wert mit Vorzeichen ausgegeben. Wenn das Argument unsigned ist, wird es als vorzeichenloser Wert ausgegeben. Diese Umwandlung ist gleichbedeutend mit d.

o

Das Argument des Typs char, short, int, long oder long long wird als vorzeichenlose Oktalzahl (Grundzahl 8) ausgegeben. Für diese Umwandlung können sowohl signed als auch unsigned Argumente benutzt werden. Wenn das Flag # angegeben wurde, wird die Genauigkeit des Ergebnisses bei Bedarf erhöht, sodass die erste Stelle des Ergebnisses eine Null ist.

p

Das Zeiger- oder uintptr_t-Argument wird als Hexadezimalzahl (Grundzahl 16) ausgegeben. D akzeptiert Zeigerargumente jeden Typs. Wenn das Flag # angegeben wurde, wird einem Ergebnis, das nicht Null ist, 0x vorangestellt.

s

Das Argument muss ein Vektor von char oder ein string sein. Die Byte aus dem Vektor oder string werden bis zu einem schließenden Nullzeichen oder bis zum Ende der Daten gelesen und als ASCII-Zeichen interpretiert und ausgegeben. Wenn keine Genauigkeit angegeben ist, wird sie als unendlich angenommen und alle Zeichen bis zu dem ersten Nullzeichen werden ausgegeben. Wenn eine Genauigkeit angegeben wurde, wird nur der Teil des Zeichenvektors ausgegeben, der in der entsprechenden Menge von Bildschirmspalten sichtbar ist. Wenn ein Argument des Typs char * formatiert werden muss, sollte es explizit in den Typ string umgewandelt werden oder den D-Operator stringof als Präfix erhalten, der DTrace anweist, die Byte aus der Zeichenkette zu verfolgen und zu formatieren.

S

Das Argument muss ein Vektor von char oder ein string sein. Das Argument wird wie bei der %s-Umwandlung verarbeitet, aber etwaige nicht druckbare ASCII-Zeichen werden durch die entsprechende Ersatzdarstellung aus Tabelle 2–5 ersetzt.

u

Das Argument des Typs char, short, int, long oder long long wird als vorzeichenlose Dezimalzahl (Grundzahl 10) ausgegeben. Für diese Umwandlung können sowohl signed als auch unsigned Argumente benutzt werden, und das Ergebnis wird stets als unsigned formatiert.

wc

Das Argument des Typs int wird in ein Sonderzeichen des Typs wchar_t (erweitertes Zeichen) umgewandelt und ausgegeben.

ws

Das Argument muss ein Vektor von wchar_t sein. Die Byte aus dem Vektor werden bis zu einem schließenden Nullzeichen oder bis zum Ende der Daten gelesen und als erweiterte Zeichen interpretiert und ausgegeben. Wenn keine Genauigkeit angegeben ist, wird sie als unendlich angenommen und alle erweiterten Zeichen bis zu dem ersten Nullzeichen werden ausgegeben. Wenn eine Genauigkeit angegeben wurde, wird nur der Teil des Vektors von erweiterten Zeichen ausgegeben, der in der entsprechenden Menge von Bildschirmspalten sichtbar ist.

x, X

Das Argument des Typs char, short, int, long oder long long wird als vorzeichenlose Hexadezimalzahl (Grundzahl 16) ausgegeben. Für diese Umwandlung können sowohl signed als auch unsigned Argumente benutzt werden. Bei der Umwandlungsform x werden die Buchstabenstellen abcdef verwendet. Bei der Umwandlungsform X werden die Buchstabenstellen ABCDEF verwendet. Wenn das Flag # angegeben wurde, wird einem Ergebnis, das nicht Null ist, 0x (bei %x) oder 0X (bei %X) vorangestellt.

Y

Das Argument des Typs uint64_twird als Anzahl der seit 00:00 Uhr UCT am 1. Januar 1970 verstrichenen Nanosekunden interpretiert und in der folgenden cftime(3C)-Form ausgegeben: “%Y %a %b %e %T %Z.” Die aktuelle Anzahl der seit 00:00 Uhr UTC am 1. Januar 1970 abgelaufenen Nanosekunden steht in der Variable walltimestamp zur Verfügung.

%

Es wird das Zeichen % ausgegeben. Kein Argument wird umgewandelt. Die vollständige Umwandlungsangabe muss %% lauten.