User Tools

Site Tools


inf:ruby:tracepoint

TracePoint

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>'

Zdarzenia

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 -
inf/ruby/tracepoint.txt · Last modified: 2021/02/16 09:56 (external edit)