首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DTrace不打印聚合

DTrace不打印聚合
EN

Stack Overflow用户
提问于 2012-12-04 18:32:37
回答 1查看 297关注 0票数 0

我正在尝试从OSX10.8的终端执行以下非常简单的DTrace用法。

sudo dtrace -n 'syscall:::entry { @counts["System Call Entry"] = count(); }'

当我点击^C时,我期望打印出聚合的@counts,但是我得到的只是打印出一个空行。有人能告诉我为什么汇总没有打印出来吗?

这真的很奇怪,因为如果我执行下面的脚本,我确实看到了聚合的打印输出,所以聚合确实有值存储在其中。

sudo dtrace -n 'syscall:::entry { @counts[probefunc] = count(); } tick-1sec { printa(@counts); exit(0); }'

EN

回答 1

Stack Overflow用户

发布于 2013-02-13 06:43:12

您必须让探测器运行更长一点的,以便它能够设置和收集一些数字。我发现实际启动/收集需要1到10秒的时间,只有这样,您才能在点击^C后打印出聚合结果。

这种延迟在OSX和Solaris上很明显,但是为什么它需要更长的时间,我还不能确定。当然,这有一个完美的逻辑(和未知的)原因。

另外,如果您添加:

代码语言:javascript
复制
dtrace:::BEGIN { printf("Starting...\n"); }

进入你的探测器,你会看到延迟的启动。然而,收集第一组数字需要更多的时间。只有在syscall:entry探测器触发并累积了一些内容之后,它才会打印“聚合”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13700900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档