【问题标题】:dtrace probes missing on yosemite system ruby优胜美地系统红宝石上缺少 dtrace 探针
【发布时间】:2015-03-23 22:04:38
【问题描述】:

在新的 yosemite 安装(您可以从 mac 商店下载的那个)上,似乎缺少 ruby​​ dtrace 提供程序:

$ sudo dtrace -l -P ruby
   ID   PROVIDER            MODULE                          FUNCTION NAME
dtrace: failed to match ruby:::: No probe matches description

下载/安装 Xcode 6.2 6C131e + CLT 无济于事,使用 (rbenv|ruby-build|rvm|ruby-install) 和 --enable-dtrace 安装 ruby​​ 也无济于事。

我被困住了。如何安装缺少的 ruby​​.usdt ?我真的很想将 dtrace 与 ruby​​ 一起使用。

无论如何,该 dtrace 的 appart 工作正常。

$ dtrace -V
dtrace: Sun D 1.12.1

想法?

【问题讨论】:

    标签: ruby dtrace


    【解决方案1】:

    我认为这里有几件事在起作用。我不认为有红宝石提供者(不再)。 Ruby 探针仅在您运行或正在运行 ruby​​ 进程时可用。例如:

    sudo dtrace  -c 'ruby -v' -l -m ruby
    

    在我的系统上创建以下输出:

       ID   PROVIDER            MODULE                          FUNCTION NAME
    315346  ruby85332              ruby                   empty_ary_alloc array-create
    315347  ruby85332              ruby                           ary_new array-create
    315348  ruby85332              ruby                     vm_call_cfunc cmethod-entry
    315349  ruby85332              ruby                     vm_call0_body cmethod-entry
    315350  ruby85332              ruby                      vm_exec_core cmethod-entry
    

    请注意,提供程序是“ruby85332”,其中“85332”是进程 ID。因此,每个 ruby​​ 进程都有不同的提供程序。

    关于rvm,默认启用dtrace。所以--enable-dtrace

    `rvm install ruby-2.0.0 --enable-dtrace`
    

    真的不需要。另一方面,如果您在dtrace 需要root/sudo 权限的机器上工作,dtrace 探针仍然不会编译,因为编译过程无法调用dtrace

    我个人在dtrace 可执行文件上设置了SUID 标志。在我的世界里,这应该可以工作,我确实可以在编译日志中看到安装过程试图编译 dtrace 探针。但是,构建仍然失败,并出现有关“dev/fd”的一些错误。对我有用的是通过rvm mount 使用 ruby​​ vm 的预编译版本。例如:

    rvm mount -r https://rvm.io/binaries/osx/10.10/x86_64/ruby-2.0.0-p451.tar.bz2
    

    通过上述命令安装的 ruby​​ 也是我用来创建示例探针列表的那个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多