yosemite 系统 ruby 上缺少 dtrace 探测器
dtrace probes missing on yosemite system ruby
在全新的 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 安装 ruby 也无济于事) 和 --enable-dtrace
.
我卡住了。如何安装缺少的 ruby.usdt ?我真的很想将 dtrace 与 ruby 一起使用。
无论如何,appart 从那个 dtrace 工作正常。
$ dtrace -V
dtrace: Sun D 1.12.1
想法?
我认为这里有几件事在起作用。我认为没有 ruby 提供商(不再)。 Ruby 探测仅在您 运行 或具有 运行ning 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 也是我用来创建示例探针列表的那个。
在全新的 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 安装 ruby 也无济于事) 和 --enable-dtrace
.
我卡住了。如何安装缺少的 ruby.usdt ?我真的很想将 dtrace 与 ruby 一起使用。
无论如何,appart 从那个 dtrace 工作正常。
$ dtrace -V
dtrace: Sun D 1.12.1
想法?
我认为这里有几件事在起作用。我认为没有 ruby 提供商(不再)。 Ruby 探测仅在您 运行 或具有 运行ning 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 也是我用来创建示例探针列表的那个。