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.
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.