Совсем новый API трассировки в Ruby 2.0 использовать те же датчики, что потребителя использует?
Я потратил некоторое время на изучение использования Dtrace и Ruby.. затем нашел новый класс TracePoint в Ruby core для 2.0. Не трассировки использовать те же датчики под одеялом, что потребителя использует для мониторинга выполнения Руби?
1 ответ:
Нет, они реализованы с помощью отдельного набора макросов C в исходном коде ruby. Однако в большинстве мест, где есть зонд DTrace, также есть вызов EXEC_EVENT_HOOK (который использует TracePoint). Существуют зонды DTrace в низкоуровневом распределении строк и массивов,которые не имеют соответствующих крючков TracePoint. Есть также одно место, где есть вызовы EXEC_EVENT_HOOK без DTrace зондов (переключение потоков).
Помните, что TracePoint позволяет выполнять произвольные ruby. Это дает вам большую гибкость при использовании TracePoint, но за счет гораздо большего эффекта зонда, чем при использовании DTrace.