Najprostszy przykład wykorzystania:
2.0.0p353 :001 > trace = TracePoint.new(:raise) {|tp| p [tp.lineno, tp.event, tp.raised_exception]} => #<TracePoint:disabled> 2.0.0p353 :002 > trace.enable => false 2.0.0p353 :003 > 0 / 0 [3, :raise, #<ZeroDivisionError: divided by 0>] [86, :raise, #<ZeroDivisionError: divided by 0>] ZeroDivisionError: divided by 0 from (irb):3:in `/' from (irb):3 from /home/sqbell/.rvm/rubies/ruby-2.0.0-p353/bin/irb:12:in `<main>'
TracePoint
umożliwia podpięcie się do kilku predefiniowanych zdarzeń.
:class
- podpięcie się do definicji klasy lub modułu,:end
- koniec definicji klasy lub modułu,:call
- wywołanie metody w Rubym,:return
- zwrócenie wartości z metody w Rubym,:c_call
- wywołanie metody w CRubym,:c_return
- zwrócenie wartości z metody w CRubym,:exception
- rzucenie wyjątku,:b_call
- wywołanie bloku,:b_return
- zwrócenie wartości z bloku,:thread_begin
- :thread_end
-