优胜美地系统红宝石上缺少dtrace探针

时间:2015-03-23 22:04:38

标签: ruby dtrace

在新的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没有用,安装ruby时使用(rbenv | ruby​​-build | rvm | ruby​​-install)和--enable-dtrace

我被困住了。如何安装缺少的ruby.usdt?我真的很喜欢用红宝石搭配dtrace。

无论如何,从那个dtrace的appart工作正常。

$ dtrace -V
dtrace: Sun D 1.12.1

想法?

1 个答案:

答案 0 :(得分: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也是我用来创建样本探测列表的那个。