在新的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
想法?
答案 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也是我用来创建样本探测列表的那个。