请问dtrace启用了哪些探针?

Posted

技术标签:

【中文标题】请问dtrace启用了哪些探针?【英文标题】:Can I ask dtrace what probes are enabled? 【发布时间】:2011-06-21 14:09:54 【问题描述】:

如果重要的话,我使用的是 Mac OS X,但我相信这将适用于所有操作系统。如果每个操作系统的答案不同,我也会有兴趣了解这一点。

假设我打开了一个终端窗口,启用了一些探测,然后开始使用 DTrace 收集数据。

我可以从不同的终端窗口询问 DTrace 启用了哪些探测吗?如果有,怎么做?

【问题讨论】:

【参考方案1】:

我在 DTrace 邮件列表中从 Adam Leventhal 那里获得了以下信息。首先,他提供了这个在 Solaris 上运行的脚本

#!/usr/sbin/dtrace -s

#pragma D option quiet

int i;

tick-100
/i >= `dtrace_nprobes/

       exit(0);


tick-100
        printf("%4d %10s %20s %20s %10s %s\n", i,
           stringof(`dtrace_probes[i]->dtpr_provider->dtpv_name),
           stringof(`dtrace_probes[i]->dtpr_mod),
           stringof(`dtrace_probes[i]->dtpr_func),
           stringof(`dtrace_probes[i]->dtpr_name),
           `dtrace_probes[i]->dtpr_ecb != NULL ? "enabled" : "disabled");
       i++

很遗憾,由于一个错误,相同的内核变量在 Mac OS X 上不可用。

【讨论】:

以上是关于请问dtrace启用了哪些探针?的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Mac OS X 上通过 jinfo 启用 DTrace 探测

在 C++ 中使用 Dtrace 设置我自己的探针

Ruby 2.0 中的新 Tracepoint API 是不是使用 dtrace 使用的相同探针?

使用单个提供程序名称为插件创建 dtrace 探针

Dtrace 无效的探针说明符错误

DTrace - 如何在返回探针中正确检索初始参数