Guía de seguimiento dinámico de Solaris

Definición de proveedores y sondeos

Los sondeos de DTrace se definen en un archivo de origen .d que se utiliza a continuación para compilar y vincular la aplicación. En primer lugar, seleccione un nombre adecuado para el proveedor de aplicaciones de usuario. El nombre del proveedor que elija se anexará al identificador de proceso de cada proceso que ejecute el código de la aplicación. Por ejemplo, si elige como nombre de proveedor myserv para un servidor Web que se estaba ejecutando con el ID de proceso 1203, el nombre del proveedor de DTrace correspondiente a este proceso será myserv1203. En el archivo de origen .d, agregue una definición de proveedor similar al siguiente ejemplo:

provider myserv {
	...
};			

A continuación, agregue una definición para cada sondeo y los argumentos correspondientes. El ejemplo siguiente define los dos sondeos que se han explicado en Elección de los puntos de sondeo. El primero de ellos tiene dos argumentos, ambos del tipo string, y el segundo sondeo no tiene argumentos. El compilador D convierte dos caracteres de subrayado consecutivos (__) de cualquier nombre de sondeo en un guión (-).

provider myserv {
	probe query__receive(string, string);
	probe query__respond();
};

Debe agregar atributos de estabilidad a la definición del proveedor para que los consumidores de los sondeos sepan que se pueden producir cambios en versiones futuras de la aplicación. Consulte el Capítulo 39Estabilidad para obtener más información acerca de los atributos de estabilidad de DTrace. Los atributos de estabilidad de definen en la forma que se indica en este ejemplo:


Ejemplo 34–1 myserv.d: Sondeos de aplicación definidos estáticamente

#pragma D attributes Evolving/Evolving/Common provider myserv provider
#pragma D attributes Private/Private/Unknown provider myserv module
#pragma D attributes Private/Private/Unknown provider myserv function
#pragma D attributes Evolving/Evolving/Common provider myserv name
#pragma D attributes Evolving/Evolving/Common provider myserv args

provider myserv {
	probe query__receive(string, string);
	probe query__respond();
};


Nota –

Las cadenas de D que utilicen argumentos no enteros de sondeos agregados por el usuario deben aplicar las funciones copyin() y copyinstr() para recuperar esos argumentos. Consulte el Capítulo 33Seguimiento de procesos de usuario para obtener más información.