나는 Dtrace와 Ruby를 사용하는 것에 대해 많은 시간을 보냈다. 그런 다음 2.0 용 Ruby 코어에서 새로운 TracePoint 클래스를 발견했다. TracePoint는 dtrace가 루비 실행을 모니터링하는 데 사용하는 커버 아래에서 동일한 프로브를 사용합니까?Ruby 2.0의 새로운 Tracepoint API는 dtrace가 사용하는 것과 동일한 프로브를 사용합니까?
2
A
답변
1
아니요, 루비 소스에서 별도의 C 매크로 집합을 사용하여 구현됩니다. 그러나 DTrace 프로브가있는 대부분의 장소에는 EXEC_EVENT_HOOK (TracePoint가 사용하는 것) 호출이 있습니다. 해당 TracePoint 후크가없는 로우 레벨 문자열 및 어레이 할당에는 DTrace 프로브가 있습니다. 또한 DTrace 프로브 (스레드 전환)가없는 EXEC_EVENT_HOOK에 대한 호출이있는 곳이 한 곳 있습니다.
TracePoint를 사용하면 임의의 루비를 실행할 수 있습니다. 이렇게하면 TracePoint를 사용하는 유연성이 향상되지만 DTrace를 사용할 때보 다 훨씬 더 큰 프로브 효과를 사용하면됩니다.