Guía de seguimiento dinámico de Solaris

printa()

La función printa() se utiliza para dar formato a los resultados de las adiciones en un programa D. Se puede llamar a esta función con uno de los dos formatos siguientes:

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

Si se utiliza el primer formato de la función, el comando dtrace(1M) realiza una captura uniforme de los datos de la adición y genera una salida conforme al formato de salida predeterminado utilizado para las adiciones, como se describe en el Capítulo 9Adiciones.

Si se utiliza el segundo formato de la función, el comando dtrace(1M) realiza una captura uniforme de los datos de la adición y genera una salida conforme a las conversiones especificadas en la cadena de formato, de acuerdo con las siguientes reglas:

El siguiente programa D muestra un ejemplo completo de printa() utilizando el proveedor profile para obtener una muestra del valor de caller y, a continuación, dar un formato de tabla simple a los resultados:

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

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

Si utiliza dtrace para ejecutar este programa, espere unos segundos y pulse Control-C para ver una salida similar a la siguiente:


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