La domanda praticamente riassume tutto. "dtrace 'stampa un array associativo" "ha esattamente un hit su google e le ricerche simili sono ugualmente inutili.Come si stampa un array associativo in dtrace?
EDIT:
Se dovessi usare un'aggregazione, non sono consapevoli del fatto che sarei ancora in grado di rimuovere le voci. La mia applicazione richiede che io sia in grado di fare cose come:
file_descriptors[0] = "stdin"
file_descriptors[3] = "service.log"
...
...
file_descriptors[3] = 0
...
...
print_array(file_descriptors) # should print only those entries that have not been cleared.
so che è possibile cancellare un intero aggregazione, ma che dire di una singola voce?
UPDATE:
Dal momento che sto facendo questo in OS X e la mia domanda è quello di monitorare tutte le descrittori di file che sono stati aperti da un particolare processo, sono stato in grado di avere una serie di 256 pathnames, soly:
syscall::open*:entry
/execname == $1/
{
self->path = copyinstr(arg0);
}
syscall::open*:return
/execname == $1/
{
opened[arg0] = self->path;
}
syscall::close*:entry
/execname == $1/
{
opened[arg0] = 0;
}
tick-10sec
{
printf(" 0: %s\n", opened[0]);
}
The above probe repeated 255 more times...
Fa schifo. Mi piacerebbe davvero avere qualcosa di meglio.
È possibile cancellare una singola voce in un'aggregazione? – Sniggerfardimungus
Oh, ora vedo quello che stai facendo. Le aggregazioni non sono ciò che si desidera a meno che non si raccolga una serie di dati durante la corsa per quella chiave. Scusate; Ho frainteso. – Don
Nessun problema. Il problema è un po 'difficile da decifrare e avrei potuto essere più chiaro nel mio post ... – Sniggerfardimungus