Guía de seguimiento dinámico de Solaris

Representación de las cadenas

Las cadenas se representan en DTrace como una matriz de caracteres con un byte nulo como terminación (es decir, un byte cuyo valor es cero, normalmente escrito como '\0'). La parte visible de la cadena es de longitud variable, en función de la ubicación del byte nulo; sin embargo, DTrace guarda cada cadena en una matriz de tamaño fijo de forma que cada sondeo supervisa una cantidad homogénea de datos. Las cadenas no pueden superar la longitud de este límite de cadena predefinido, sin embargo, el límite se puede modificar en el programa D o en la línea de comandos de dtrace mediante el ajuste de la opción strsize. Consulte el Capítulo 16Opciones y optimizables, para obtener más información sobre las opciones ajustables de DTrace. El límite predeterminado de la cadena es 256 bytes.

El lenguaje D proporciona un tipo string explícito en vez de utilizar el tipo char * para hacer referencia a las cadenas. El tipo string es equivalente a char *, en el sentido de que hace referencia a una secuencia de caracteres, pero el compilador de D y las funciones de D como trace() proporcionan mejores capacidades cuando se aplican a expresiones del tipo string. Por ejemplo, el tipo string elimina la ambigüedad del tipo char * cuando necesita realizar un seguimiento de los bytes de una cadena. En la instrucción de D:

trace(s);

Si s es del tipo char *, DTrace realizará un seguimiento del valor del puntero s (es decir, realizará un seguimiento de un valor de dirección de número entero). En la instrucción de D:

trace(*s);

por definición del operador *, el compilador de D anulará la referencia al puntero s y realizará un seguimiento del carácter único en dicha ubicación. Estos comportamientos son esenciales para que pueda manipular los punteros de caracteres que, por diseño, hacen referencia a caracteres únicos o a matrices de enteros de tamaño de byte que no son cadenas y no terminan con un byte nulo. En la instrucción de D:

trace(s);

Si s es del tipo string, el tipo string indica al compilador de D que desea que DTrace realice un seguimiento de una cadena de caracteres con una terminación de byte nulo cuya dirección está guardada en la variable s. También puede realizar comparaciones léxicas de expresiones del tipo string, como se describe en Comparación de cadenas.