質問はそれをかなり要約しています。「dtrace'連想配列を印刷する'」は、グーグルヒットが1つだけあり、同様の検索も同様に役に立ちません。
編集:
集計を使用する場合でも、エントリを削除できるかどうかはわかりません。私のアプリケーションでは、次のようなことができる必要があります。
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)
集計全体をクリアできることは知っていますが、1つのエントリについてはどうでしょうか。
アップデート:
私はOSXでこれを行っており、アプリケーションは特定のプロセスによって開かれたすべてのファイル記述子を追跡するため、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...
最悪だ。もっといいものが欲しいです。