Guia de rastreamento dinâmico Solaris

Eliminando a interferência de dtrace(1M)

Se rastrear cada chamada para a chamada do sistema write(2) , você provocará uma saída em cascada. Cada chamada para write() faz o comando dtrace(1M) chamar write(), já que ela exibe a saída, e assim por diante. Este loop de comentários é um bom exemplo de como o comando dtrace pode interferir nos dados desejados. Você pode usar um predicado simples para evitar que esses dados indesejados sejam rastreados:

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

A variável de macro $pid se expande para o identificador do processo que ativou os testes. A variável pid contém o identificador do processo cujo segmento estava sendo executado na CPU onde o teste foi acionado. Portanto, o predicado /pid != $pid/ garante que o script não rastreie quaisquer eventos relacionados à execução deste próprio script.