Guia de rastreamento dinâmico Solaris

printa()

A função printa() é usada para formatar os resultados de agregações em um programa em D. A função é chamada de uma de duas formas:

printa(@aggregation-name);
printa(format-string, @aggregation-name);

Se o primeiro formato da função for usado, o comando dtrace(1M) tirará um instantâneo consistente dos dados da agregação e produzirá uma saída equivalente ao formato de saída padrão usado para agregações, descrito no Capítulo 9Agregações.

Se o segundo formato da função for usado, o comando dtrace(1M) tirará um instantâneo consistente dos dados da agregação e produzirá uma saída de acordo com as conversões especificadas na seqüência de formato, de acordo com as seguintes regras.

O programa em D seguinte mostra um exemplo completo de printa (), usando o provedor de perfil profile para fazer uma amostra do valor de caller e, em seguida, formatando os resultados como uma tabela simples:

profile:::profile-997
{
	@a[caller] = count();
}

END
{
	printa("%@8u %a\n", @a);
}

Se você usar o dtrace para executar este programa, espere alguns segundos, e pressione Control-C, para ver uma saída semelhante ao exemplo seguinte:


# dtrace -s printa.d
^C
CPU     ID                    FUNCTION:NAME
  1      2                             :END        1 0x1
       1 ohci`ohci_handle_root_hub_status_change+0x148
       1 specfs`spec_write+0xe0
       1 0xff14f950
       1 genunix`cyclic_softint+0x588
       1 0xfef2280c
       1 genunix`getf+0xdc
       1 ufs`ufs_icheck+0x50
       1 genunix`infpollinfo+0x80
       1 genunix`kmem_log_enter+0x1e8
       ...