class TracePoint

Eine Klasse, die die Funktionalität von Kernel#set_trace_func in einer gut strukturierten objektorientierten API bereitstellt.

Beispiel

Verwenden Sie TracePoint, um Informationen speziell für Ausnahmen zu sammeln

trace = TracePoint.new(:raise) do |tp|
  p [tp.lineno, tp.event, tp.raised_exception]
end
#=> #<TracePoint:disabled>

trace.enable  #=> false

0 / 0
#=> [5, :raise, #<ZeroDivisionError: divided by 0>]

Ereignisse

Wenn Sie die Arten von Ereignissen, auf die Sie hören möchten, nicht angeben, enthält TracePoint alle verfügbaren Ereignisse.

Hinweis: Verlassen Sie sich nicht auf den aktuellen Ereignissatz, da diese Liste Änderungen unterliegt. Stattdessen wird empfohlen, die Arten von Ereignissen anzugeben, die Sie verwenden möchten.

Um zu filtern, was verfolgt wird, können Sie eine beliebige Anzahl der folgenden als events übergeben

:line

Eine Anweisung oder ein Ausdruck in einer neuen Zeile ausführen.

:class

Starten Sie die Definition einer Klasse oder eines Moduls.

:end

Beenden Sie die Definition einer Klasse oder eines Moduls.

:call

Rufen Sie eine Ruby-Methode auf.

:return

Kehren Sie aus einer Ruby-Methode zurück.

:c_call

Rufen Sie eine C-Routine auf.

:c_return

Kehren Sie aus einer C-Routine zurück.

:raise

Lösen Sie eine Ausnahme aus.

:rescue

Fangen Sie eine Ausnahme ab.

:b_call

Ereignis-Hook beim Eintritt in einen Block.

:b_return

Ereignis-Hook beim Ende eines Blocks.

:a_call

Ereignis-Hook bei allen Aufrufen (call, b_call und c_call).

:a_return

Ereignis-Hook bei allen Rückgaben (return, b_return und c_return).

:thread_begin

Ereignis-Hook beim Beginn eines Threads.

:thread_end

Ereignis-Hook beim Ende eines Threads.

:fiber_switch

Ereignis-Hook beim Wechsel von Fibers.

:script_compiled

Neuer Ruby-Code kompiliert (mit eval, load oder require).