Guia de rastreamento dinâmico Solaris

Teste END

O teste END é acionado depois de todos os outros testes. Este teste não será acionado até que todas as cláusulas de teste tenham sido concluídas. Este teste pode ser usado para processar o estado que foi coletado ou para formatar a saída. A ação printa () é, portanto, freqüentemente usada no teste END. Os testes BEGIN e END podem ser usados juntos para medir o tempo total gasto no rastreio:

BEGIN
{
	start = timestamp;
}

/*
 * ... other tracing actions...
 */

END
{
	printf("total time: %d secs", (timestamp - start) / 1000000000);
}

Consulte Normalização de dados e printa() para obter outros usos do teste END.

Como acontece com o teste BEGIN, nenhum argumento é definido para o teste END. O contexto no qual o teste END é acionado é arbitrário e não deve depender dele.

Durante o rastreio com a opção bufpolicy definida como fill, o espaço adequado é reservado para acomodar quaisquer registros rastreados no teste END. Consulte Política fill e testes END para obter detalhes.


Observação –

A ação exit() faz com que o rastreio pare e o teste END seja acionado. Entretanto, existe algum atraso entre a chamada da ação exit() e o acionamento do teste END . Durante esse atraso, nenhum teste será acionado. Depois que um teste chama a ação exit(), o teste END não é acionado até que o consumidor do DTrace determine que exit () tenha sido chamada e o rastreio pare. A taxa na qual o status de saída é verificado pode ser definida através da opção statusrate. Para obter mais informações, consulte o Capítulo 16Opções e ajustáveis.