Вопрос в значительной степени подводит итог. "dtrace 'напечатать ассоциативный массив'" содержит ровно один запрос Google, и подобные поиски одинаково бесполезны.
EDIT:
Если бы я использовал агрегацию, я не знал бы, что я все еще смог бы удалить записи. Мое приложение требует, чтобы я мог делать такие вещи, как:
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.
Я знаю, что вы можете очистить всю совокупность, но как насчет одной записи?
UPDATE:
Поскольку я делаю это в OS X и мое приложение отслеживает все файловые дескрипторы, которые были открыты определенным процессом, я смог получить массив из 256 путей, таким образом:
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...
Это отстой. Я действительно хотел бы иметь что-то лучше.