Manuel de suivi dynamique Solaris

Formats de conversion

Chaque séquence de caractères de conversion provoque l'extraction d'aucun ou de plusieurs arguments. Si un nombre insuffisant d'arguments est fourni pour la chaîne de format, ou si la chaîne de format est épuisée et que des arguments restent disponibles, le compilateur D génère un message d'erreur approprié. Si un format de conversion est spécifié, le compilateur D génère un message d'erreur approprié. Les séquences de caractères de conversion sont les suivantes :

a

Le pointeur ou l'argument uintptr_t est affiché en tant que nom du symbole de noyau sous le format module `nom-symbole plus un décalage d'octets hexadécimaux facultatif. Si la valeur ne se situe pas dans la plage définie par un symbole de noyau connu, elle est affichée en tant que nombre entier hexadécimal.

c

L'argument char, short ou int est affiché en tant que caractère ASCII.

C

L'argument char, short ou int est affiché en tant que caractère ASCII si le caractère est un caractère ASCII imprimable. Dans le cas contraire, il est affiché avec la séquence d'échappement correspondante, comme illustré dans le Tableau 2–5.

d

L'argument char, short, int, long ou long long est affiché en tant que nombre entier décimal (base 10). Si l'argument est signed, il sera affiché en tant que valeur signée. Si l'argument est unsigned, il sera affiché en tant que valeur non signée. Cette conversion a la même signification que i.

e, E

L'argument float, double ou long double est converti sur le style [-] d.ddddd, le caractère de base étant précédé d'un chiffre et suivi d'un nombre de chiffres égal à la précision. Le caractère de base n'est pas égal à zéro si l'argument n'est pas égal à zéro. Si aucune précision n'est spécifiée, sa valeur par défaut est 6. Si la précision est égale à 0 et l'indicateur # n'est pas spécifié, aucun caractère de base n'apparaît. Le format de conversion E produit un nombre avec E au lieu de e introduisant l'exposant. L'exposant contient toujours au moins deux chiffres. La valeur est arrondie au nombre approprié de chiffres.

f

L'argument float, double ou long double est converti sur le style [-] ddd. ddd, le nombre de chiffres précédant le caractère de base étant égal à la spécification de précision. Si aucune précision n'est spécifiée, sa valeur par défaut est 6. Si la précision est égale à 0 et l'indicateur # n'est pas spécifié, aucun caractère de base n'apparaît. Si un caractère de base s'affiche, il est précédé d'au moins un chiffre. La valeur est arrondie au nombre approprié de chiffres.

g, G

L'argument float, double ou long double est affiché dans le style f ou e (ou dans le style E dans le cas d'un caractère de conversion G), avec la précision spécifiant le nombre de chiffres significatifs. Si une précision explicite est égale à 0, elle prend 1 comme valeur. Le style utilisé dépend de la valeur convertie : le style e (ou E) n'est utilisé que si l'exposant résultant de la conversion est inférieur à -4 ou est supérieur ou égal à la précision. Les zéros finaux sont supprimés de la partie fractionnelle du résultat. Un caractère de base ne s'affiche que s'il précède un chiffre. Si l'indicateur # est spécifié, les zéros finaux ne sont pas supprimés du résultat.

i

L'argument char, short, int, long ou long long est affiché en tant que nombre entier décimal (base 10). Si l'argument est signed, il sera affiché en tant que valeur signée. Si l'argument est unsigned, il sera affiché en tant que valeur non signée. Cette conversion a la même signification que d.

o

L'argument char, short, int, long ou long long est affiché en tant que nombre entier octal non signé (base 8). Les arguments signed ou unsigned peuvent être utilisés avec cette conversion. Si l'indicateur # est spécifié, la précision du résultat sera augmentée si nécessaire pour forcer le premier chiffre du résultat à prendre la valeur zéro.

p

Le pointeur ou l'argument uintptr_t est affiché en tant que nombre entier hexadécimal (base 16). D accepte des arguments de pointeur de n'importe quel type. Si l'indicateur # est spécifié, 0x sera pré-ajouté aux résultats différents de zéro.

s

L'argument doit être un tableau de char ou une string. Les octets de ce tableau ou de la string sont lus jusqu'à un caractère nul de fin ou jusqu'à la fin des données, puis interprétés et affichés en tant que caractères ASCII. Si la précision n'est pas spécifiée, elle prend une valeur infinie, donc tous les caractères jusqu'au premier caractère nul sont affichés. Dans le cas contraire, seule la partie du tableau de caractères affichée dans le nombre correspondant de colonnes à l'écran s'affiche. Si un argument de type char * doit être formaté, son type doit être forcé sur string ou l'opérateur D stringof doit être placé en préfixe pour indiquer que DTrace doit procéder au suivi des octets de la chaîne et les formater.

S

L'argument doit être un tableau de char ou une string. L'argument est traité comme avec la conversion %s mais tous les caractères ASCII non imprimables sont remplacés par la séquence d'échappement correspondante décrite dans le Tableau 2–5.

u

L'argument char, short, int, long ou long long est affiché en tant que nombre entier décimal non signé (base 10). Les arguments signed ou unsigned peuvent être utilisés avec cette conversion et le résultat est toujours formaté en tant que unsigned.

wc

L'argument int est converti en caractère large (wchar_t) et celui qui en résulte s'affiche.

ws

L'argument doit être un tableau de wchar_t. Les octets d'un tableau sont lus jusqu'à un caractère nul de fin ou la fin des données, puis sont interprétés et affichés en tant que caractères larges. Si la précision n'est pas spécifiée, elle prend une valeur infinie, donc tous les caractères larges jusqu'au premier caractère nul sont affichés. Dans le cas contraire, seule la partie du tableau de caractères larges affichée dans le nombre correspondant de colonnes à l'écran s'affiche.

x, X

L'argument char, short, int, long ou long long est affiché en tant que nombre entier décimal non signé (base 16). Les arguments signed ou unsigned peuvent être utilisés avec cette conversion. Si le format de conversion x est utilisé, les chiffres littéraux abcdef sont utilisés. Si le format de conversion X est utilisé, les chiffres littéraux abcdef sont utilisés. Si l'indicateur # est spécifié, 0x (pour %x) ou 0X (pour %X) y sera ajouté.

Y

L'argument uint64_t est interprété comme le nombre de nanosecondes écoulées depuis 00:00 Temps universel coordonné, 1er janvier 1970 et s'affiche sous le format cftime(3C) suivant : “%Y %a %b %e %T %Z”. Le nombre actuel de nanosecondes écoulées depuis le 1er janvier 1970, 00:00 UTC, est disponible dans la variable walltimestamp.

%

Permet d'afficher un caractère % littéral. Aucun argument n'est converti. La spécification de conversion complète doit être %%.