这个问题已经被概括地提出了。“dtrace 'print an associative array'”只有一个谷歌搜索结果,类似的搜索同样无用。
编辑:如果我使用聚合,我不知道是否仍然能够删除条目。我的应用程序要求我能够执行诸如此类的操作:
我知道你可以清除整个聚合,但单个条目怎么办?
更新:
由于我是在OS X上进行此操作,并且我的应用程序是跟踪特定进程已打开的所有文件描述符,因此我能够拥有256个路径名的数组,如下所示:
编辑:如果我使用聚合,我不知道是否仍然能够删除条目。我的应用程序要求我能够执行诸如此类的操作:
file_descriptors[0] = "stdin"
file_descriptors[3] = "service.log"
...
...
file_descriptors[3] = 0
...
...
# should print only those entries that have not been cleared.
print_array(file_descriptors)
我知道你可以清除整个聚合,但单个条目怎么办?
更新:
由于我是在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...
很糟糕,我真的希望有更好的东西。