0

我在 2007 年发现了有关x86 sh 二进制文件的补丁(和更新),以支持 sh DTrace 提供程序。

但是我在 OS X 上找不到任何探测器。我正在检查:

$ sudo dtrace -l | grep command-entry

请参阅:Oracle 站点上的/bin/sh DTrace Provider (博客上的同一篇文章)

也许是因为 mysh与 GNU bash 相同?

$ /bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)

这些探测器在哪里实施,如何找到它们或如何激活它们?

是否仅在 Solaris 上实现?

4

2 回答 2

2

我从来没有将它添加到公共 Solaris 中的 bourne shell(尽管我得到了 PSARC 的批准),因为在测试时我发现 bourne shell fork 的方式有一些主要的性能影响。为了解决这个问题,我必须将其迁移到使用 posix_spawn()。鉴于我们在 Solaris 11 中不再使用这个 shell,这是一项毫无结果的工作。我没有放弃去其他贝壳,但这不是我的当务之急。

将探针移动到另一个 shell 应该很轻松,除了在我们有复合变量时决定在“variable-assign”中返回什么作为先前值。

于 2016-06-29T12:01:21.287 回答
1

您提到的补丁是特定于 Solaris 上的 bourne shell 的,据我所知,它从未被移植到其他 shell 上。

在 illumos(née OpenSolaris)提交历史记录中,我们可以看到它/bin/sh已更改为2010 年 3 月 2 日ksh93提交ead1f93中的符号链接。考虑到 Alan 的博客文章的日期为 2007 年,至少 Solaris 10 中没有包含它自 2005 年发布 Solaris 10 以来,最初并非如此。它可能是 2007 年后的更新之一,但我有点怀疑。从现有代码中,我什至找不到/bin/sh切换到 ksh 之前提供的内容,这可能意味着它是封闭位之一。

command-entry无论哪种方式,它都不是任何 illumos 版本的一部分,而且我在 illumos 提交历史中没有看到任何对 dtrace 探针的引用。除非艾伦或其他与此事关系密切的人可以说出来,否则它可能已经被时间遗忘了。

总之,据我所知,这些补丁从未包含在 Sun 或其他公司发布的任何产品中。几乎可以肯定,它必须在任何现有的开源 shell 上从头开始重新实现。

于 2016-04-08T23:35:56.873 回答