Advent calendar の途中ですが、昨日デバッグするためにやったこと。Ruby 2.0 から使えるテクニックです(同じようなことは、もっと前から入っている set_trace_func を使っても出来ました)。 tracer というライブラリがあり、実行過程を dump することが出来ますが、TracePoint を使うことで簡単に似たようなことをやることが出来ます。 n = 0 trace = TracePoint.new(:a_call, :a_return, :raise){|tp| case tp.event.to_s # 手抜き when /call/ puts ' ' * n + tp.inspect n+=1 when /return/ n-=1 puts ' ' * n + tp.inspect when /raise/ puts ' ' * n + '!!!'