Guía de seguimiento dinámico de Solaris

Formatos de conversión

Cada secuencia de caracteres de conversión permite obtener cero o más argumentos. Si se proporciona un número insuficiente de argumentos para la cadena de formato o si se ha agotado la cadena de formato, pero aún quedan argumentos, el compilador de D emite el mensaje de error correspondiente. Si se especifica un formato de conversión no definido, el compilador de D emite el mensaje de error correspondiente. Las secuencias de caracteres de conversión son:

a

El puntero o el argumento uintptr_t se imprime como nombre del símbolo del núcleo con el formato módulo `nombre_símbolo más un desplazamiento de bytes hexadecimal opcional. Si el valor no se encuentra dentro del intervalo definido por un símbolo del núcleo conocido, se imprimirá el valor en forma de entero hexadecimal.

c

El argumento char, short o int se imprime como carácter ASCII.

C

El argumento char, short o int se imprime como carácter ACSCII si el carácter presenta un formato ASCII imprimible. Si el carácter no es imprimible, se imprimirá mediante la secuencia de escape correspondiente, como se muestra en la Tabla 2–5.

d

El argumento char, short, int, long o long long se imprime en forma de entero decimal (base 10). Si el argumento tiene signo (signed), se imprimirá como valor con signo. Si, por el contrario, no tiene signo (unsigned), se imprimirá como valor sin signo. Esta conversión tiene el mismo significado que i.

e, E

El argumento float, double o long double se convierte al estilo [-] d.ddddd, donde hay un dígito antes del carácter de base y el número de dígitos posteriores al mismo es igual a la precisión. El carácter de base tiene un valor distinto a cero si el argumento es también distinto a cero. Si no se especifica la precisión, el valor predeterminado es 6. Si la precisión es 0 y no se ha especificado el indicador #, no aparece ningún carácter de base. El formato de conversión E genera un número con E en lugar de e antes del exponente. El exponente siempre contiene, al menos, dos dígitos. El valor se redondea para obtener el número adecuado de dígitos.

f

El argumento float, double o long double se convierte al estilo [-] ddd.ddd, donde el número de dígitos detrás del carácter de base es igual a la especificación de precisión. Si no se especifica la precisión, el valor predeterminado es 6. Si la precisión es 0 y no se ha especificado el indicador #, no aparece ningún carácter de base. Si aparece un carácter de base, al menos, uno de los dígitos debe aparecer delante de él. El valor se redondea para obtener el número adecuado de dígitos.

g, G

El argumento float, double o long double se imprime con el estilo f o e (o el estilo E si se utiliza un carácter de conversión G), con la precisión que especifica el número de dígitos significativos. Si la precisión explícita es 0, se establece como 1. El estilo utilizado depende del valor convertido: el estilo e (o E) sólo se utiliza si el exponente procedente de la conversión es inferior a -4 o superior o igual a la precisión. Los ceros finales se eliminan de la parte fraccional del resultado. Sólo aparece un carácter de base si incluye a continuación un dígito. Si se especifica el indicador #, los ceros finales no se eliminan del resultado.

i

El argumento char, short, int, long o long long se imprime en forma de entero decimal (base 10). Si el argumento tiene signo (signed), se imprimirá como valor con signo. Si, por el contrario, no tiene signo (unsigned), se imprimirá como valor sin signo. Esta conversión tiene el mismo significado que d.

o

El argumento char, short, int, long o long long se imprime en forma de entero octal (base 8) sin signo. Los argumentos con signo (signed) o sin signo (unsigned) pueden utilizarse con esta conversión. Si se especifica el indicador #, se aumentará la precisión del resultado, si es necesario, para hacer que el primer dígito del resultado sea cero.

p

El puntero o el argumento uintptr_t se imprime en forma de entero hexadecimal (base 16). El lenguaje D acepta argumentos de puntero de cualquier tipo. Si se especifica el indicador #, se incluirá 0x delante de un resultado distinto a cero.

s

El argumento debe ser una matriz de char o una cadena, string. Los bytes de la matriz o la cadena, string, se leen hasta un carácter nulo final o hasta el final de los datos, y se interpretan e imprimen como caracteres ASCII. Si no se especifica la precisión, se establece como infinita, por lo que se imprimen todos los caracteres hasta el primer carácter nulo. Si, por el contrario, se especifica la precisión, sólo se imprimirá la parte de la matriz de caracteres que se mostrará en el número correspondiente de columnas de la pantalla. Si se da un formato a un argumento del tipo char *, debería convertirse en una cadena, string, o incluir como prefijo un indicador stringof del lenguaje D para indicar que DTrace debe realizar un seguimiento de los bytes de la cadena y darles un formato.

S

El argumento debe ser una matriz de char o una cadena, string. El argumento se procesa del mismo modo que la conversión %s, pero todos los caracteres ASCII no imprimibles se sustituyen por la secuencia de escape correspondiente, que se describe en la Tabla 2–5.

u

El argumento char, short, int, long o long long se imprime en forma de entero decimal (base 10) sin signo. Los argumentos con signo (signed) o sin signo (unsigned) pueden utilizarse con esta conversión, aunque al resultado siempre se le da un formato sin signo (unsigned).

wc

El argumento int se convierte en un carácter ancho (wchar_t) y se imprime el carácter ancho resultante.

ws

El argumento debe ser una matriz de wchar_t. Los bytes de la matriz se leen hasta un carácter nulo final o el final de los datos, y se interpretan e imprimen como caracteres anchos. Si no se especifica la precisión, se establece como infinita,por lo que se imprimen todos los caracteres anchos hasta el primer carácter nulo. Si, por el contrario, se especifica la precisión, sólo se imprimirá la parte de la matriz de caracteres anchos que se mostrará en el número correspondiente de columnas de la pantalla.

x, X

El argumento char, short, int, long o long long se imprime en forma de entero hexadecimal (base 16) sin signo. Los argumentos con signo (signed) o sin signo (unsigned) pueden utilizarse con esta conversión. Si se utiliza el formato x de la conversión, se utilizarán las letras abcdef. Si se utiliza el formato X de la conversión, se utilizarán las letras ABCDEF. Si se especifica el indicador #, se incluirá 0x (para %x) o 0X (para %X) delante de un resultado distinto de cero.

Y

Se interpreta que el argumento uint64_t es el número de nanosegundos transcurridos desde las 00:00 horas (Horario universal coordinado) del 1 de enero de 1970, y se imprime con el siguiente formato cftime(3C): "%Y %a %b %e %T %Z". El número de nanosegundos transcurridos desde las 00:00 horas UTC del 1 de enero de 1970 está disponible en la variable walltimestamp.

%

Permite imprimir un carácter % literal. No se convierte ningún argumento. La especificación de conversión completa debe ser %%.