Guía de seguimiento dinámico de Solaris

Eliminación de la interferencia de dtrace(1M)

Si efectúa un seguimiento de todas las llamadas realizadas a la llamada de sistema write(2), provocará una cascada de resultados. Cada llamada realizada a write() provoca que el comando dtrace(1M) realice una llamada a write() cuando muestra la salida y así sucesivamente. El bucle de realimentación es un buen ejemplo de cómo el comando dtrace puede interferir con los datos deseados. Puede utilizar un predicado sencillo para impedir que se realice un seguimiento de estos datos no deseados:

syscall::write:entry
/pid != $pid/
{
	printf("%s", stringof(copyin(arg1, arg2)));
}

La variable de macro $pid se expande hasta el identificador del proceso que activó los sondeos. La variable pid contiene el identificador del proceso cuyo subproceso se estaba ejecutando en la CPU cuando se activó el sondeo. En consecuencia, el predicado /pid != $pid/ garantiza que la secuencia de comandos no realiza ningún seguimiento de eventos relacionados con la secuencia de comandos en sí.