Ruby 2.0: TracePoint

Ruby 2.0 é preterido Kernel#set_trace_funcem favor da classe TracePoint, que tem uma ótima API orientada a objetos. Por exemplo, rastrear todas as chamadas C pode ser tão fácil quanto

trace = TracePoint.trace(:c_call) { |tp| [tp.lineno, tp.event] }

que é um atalho conveniente para

trace = TracePoint.new(:c_call) do |tp|
p
[tp.lineno, tp.event]
end

trace
.enable