Manuel de suivi dynamique Solaris

printa()

La fonction printa() est utilisée pour formater les résultats de groupements dans un programme D. La fonction est appelée sous l'un des deux formats suivants :

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

Si le premier format de la fonction est utilisé, la commande dtrace(1M) prend un instantané cohérent des données de groupement et produit une sortie équivalente au format de sortie par défaut utilisé pour les groupements, décrit dans le Chapitre9Groupements.

Si le second format de la fonction est utilisé, la commande dtrace(1M) prend un instantané cohérent des données de groupement et produit une sortie selon les conversions spécifiées dans la chaîne de format, en fonction des règles suivantes :

Le programme D suivant montre un exemple complet de printa(), avec le fournisseur profile pour tester la valeur de caller puis en formatant les résultats sous la forme d'un tableau simple :

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

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

Si vous utilisez dtrace pour exécuter ce programme, patientez quelques secondes puis appuyez sur Control-C ; une sortie similaire à l'exemple suivant s'affiche :


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