2

我花了一些时间学习如何使用 Dtrace 和 Ruby。然后在 Ruby 核心中为 2.0 找到了新的 TracePoint 类。TracePoint 是否使用与 dtrace 用于监视 ruby​​ 执行的相同探针?

4

1 回答 1

1

不,它们是使用 ruby​​ 源代码中的一组单独的 C 宏实现的。然而,大多数有 DTrace 探测的地方也会调用 EXEC_EVENT_HOOK(这是 TracePoint 使用的)。在低级字符串和数组分配中存在 DTrace 探测器,它们没有相应的 TracePoint 挂钩。还有一个地方调用 EXEC_EVENT_HOOK 而没有 DTrace 探测(线程切换)。

请记住,TracePoint 允许您执行任意 ruby​​。这为您使用 TracePoint 提供了更大的灵活性,但代价是探测效果比使用 DTrace 时大得多。

于 2013-06-02T19:02:55.217 回答