L'exemple suivant illustre une activation anonyme DTrace pour chaque sonde du module iprb(7D) :
# dtrace -A -m iprb dtrace: saved anonymous enabling in /kernel/drv/dtrace.conf dtrace: added forceload directives to /etc/system dtrace: run update_drv(1M) or reboot to enable changes # reboot |
Au terme de la réinitialisation, dtrace(7D) affiche un message sur la console permettant d'activer les sondes spécifiées.
... Copyright 1983-2003 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. NOTICE: enabling probe 0 (:iprb::) NOTICE: enabling probe 1 (dtrace:::ERROR) configuring IPv4 interfaces: iprb0. ... |
Lors de la réinitialisation de la machine, l'état anonyme peut être consommé en spécifiant l'option -a avec dtrace :
# dtrace -a CPU ID FUNCTION:NAME 0 22954 _init:entry 0 22955 _init:return 0 22800 iprbprobe:entry 0 22934 iprb_get_dev_type:entry 0 22935 iprb_get_dev_type:return 0 22801 iprbprobe:return 0 22802 iprbattach:entry 0 22874 iprb_getprop:entry 0 22875 iprb_getprop:return 0 22934 iprb_get_dev_type:entry 0 22935 iprb_get_dev_type:return 0 22870 iprb_self_test:entry 0 22871 iprb_self_test:return 0 22958 iprb_hard_reset:entry 0 22959 iprb_hard_reset:return 0 22862 iprb_get_eeprom_size:entry 0 22826 iprb_shiftout:entry 0 22828 iprb_raiseclock:entry 0 22829 iprb_raiseclock:return ... |
L'exemple suivant se concentre uniquement sur les fonctions appelées depuis iprbattach(). Dans un éditeur, tapez le script suivant et enregistrez-le dans un fichier appelé iprb.d.
fbt::iprbattach:entry { self->trace = 1; } fbt::: /self->trace/ {} fbt::iprbattach:return { self->trace = 0; }
Exécutez les commandes suivantes pour effacer les paramètres précédents du fichier de configuration du pilote, installez la requête de suivi anonyme et réinitialisez.
# dtrace -AFs iprb.d dtrace: cleaned up old anonymous enabling in /kernel/drv/dtrace.conf dtrace: cleaned up forceload directives in /etc/system dtrace: saved anonymous enabling in /kernel/drv/dtrace.conf dtrace: added forceload directives to /etc/system dtrace: run update_drv(1M) or reboot to enable changes # reboot |
À l'issue de la réinitialisation, dtrace(7D) affiche un message différent sur la console pour indiquer l'activation légèrement différente :
... Copyright 1983-2003 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. NOTICE: enabling probe 0 (fbt::iprbattach:entry) NOTICE: enabling probe 1 (fbt:::) NOTICE: enabling probe 2 (fbt::iprbattach:return) NOTICE: enabling probe 3 (dtrace:::ERROR) configuring IPv4 interfaces: iprb0. ... |
Une fois que la machine est complètement réinitialisée, exécutez dtrace avec l'option -a et l'option -e pour consommer les données anonymes puis quitter le programme.
# dtrace -ae CPU FUNCTION 0 -> iprbattach 0 -> gld_mac_alloc 0 -> kmem_zalloc 0 -> kmem_cache_alloc 0 -> kmem_cache_alloc_debug 0 -> verify_and_copy_pattern 0 <- verify_and_copy_pattern 0 -> tsc_gethrtime 0 <- tsc_gethrtime 0 -> getpcstack 0 <- getpcstack 0 -> kmem_log_enter 0 <- kmem_log_enter 0 <- kmem_cache_alloc_debug 0 <- kmem_cache_alloc 0 <- kmem_zalloc 0 <- gld_mac_alloc 0 -> kmem_zalloc 0 -> kmem_alloc 0 -> vmem_alloc 0 -> highbit 0 <- highbit 0 -> lowbit 0 <- lowbit 0 -> vmem_xalloc 0 -> highbit 0 <- highbit 0 -> lowbit 0 <- lowbit 0 -> segkmem_alloc 0 -> segkmem_xalloc 0 -> vmem_alloc 0 -> highbit 0 <- highbit 0 -> lowbit 0 <- lowbit 0 -> vmem_seg_alloc 0 -> highbit 0 <- highbit 0 -> highbit 0 <- highbit 0 -> vmem_seg_create ... |