To pytanie podsumowuje. "dtrace" drukuje tablicę asocjacyjną "" ma dokładnie jedno trafienie w Google, a podobne wyszukiwania są równie bezużyteczne.Jak wydrukować tablicę asocjacyjną w dtrace?
EDIT:
Gdybym miał użyć agregacji, nie jestem świadomy, że będę nadal być w stanie usunąć wpisy. Moja aplikacja wymaga, że będę w stanie robić takie rzeczy jak:
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.
wiem, że można wyczyścić całą agregację, ale co jeden wpis?
UPDATE:
Ponieważ robię to w OS X i mój wniosek jest śledzenie wszystkich deskryptorów plików, które zostały otwarte przez konkretnego procesu, udało mi się mieć tablicę 256 nazwy ścieżek, w ten sposób:
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...
To jest do bani. Naprawdę chciałbym mieć coś lepszego.
Czy można wyczyścić pojedynczy wpis w agregacji? – Sniggerfardimungus
Oh - Teraz widzę, co robisz. Agregacje nie są tym, czego potrzebujesz, chyba że zbierasz pęczek danych podczas uruchamiania dla tego klucza. Przepraszam; Źle zrozumiałem. – Don
Bez problemu. Problem jest trochę trudny do złamania i mogłem być bardziej przejrzysty w moim poście ... – Sniggerfardimungus