【发布时间】:2014-04-04 08:15:17
【问题描述】:
众所周知,在不同操作系统上运行的 DTrace 提供了不同的内置功能。例如,Solaris 的旧版本在 DTrace 中没有可用的inet_ntop()。
那么当我编写一个运行在特殊操作系统上的 DTrace 脚本时,我如何才能提前知道 DTrace 提供了哪些内置函数呢?还是只能通过运行脚本并检查 DTrace 的投诉?
【问题讨论】:
标签: dtrace
众所周知,在不同操作系统上运行的 DTrace 提供了不同的内置功能。例如,Solaris 的旧版本在 DTrace 中没有可用的inet_ntop()。
那么当我编写一个运行在特殊操作系统上的 DTrace 脚本时,我如何才能提前知道 DTrace 提供了哪些内置函数呢?还是只能通过运行脚本并检查 DTrace 的投诉?
【问题讨论】:
标签: dtrace
最好的解决方案是参考相关操作系统版本的 DTrace 文档。对于 Solaris,新的 DTrace 功能几乎总是只出现在主要版本或更新中,并且文档同时(或应该)更新。因此,如果您运行的是 Solaris 11.1,那么您应该查阅“Oracle Solaris 11.1 动态跟踪指南”。
Solaris 的 dtrace(1) 没有“显示当前支持的操作”选项,但您可以考虑记录 RFE。
如果您编写的脚本需要特定版本的 DTrace 实现,则可以使用 option or pragma 绑定到它。这种机制应该存在于其他 DTrace 实现中,但任何特定版本号的含义对于每个分支都将不同。因此,一如既往,最好依靠文档。
【讨论】:
如果您想获取各种 Dtrace 模块公开的函数列表,可以使用dtrace -l
【讨论】: