class DEBUGGER__::CallTracer
def setup
def setup @tracer = TracePoint.new(:a_call, :a_return){|tp| next if skip?(tp) depth = caller.size call_identifier_str = if tp.defined_class minfo(tp) else "block" end call_identifier_str = colorize_blue(call_identifier_str) case tp.event when :call, :c_call, :b_call depth += 1 if tp.event == :c_call sp = ' ' * depth out tp, ">#{sp}#{call_identifier_str}", depth when :return, :c_return, :b_return depth += 1 if tp.event == :c_return sp = ' ' * depth return_str = colorize_magenta(DEBUGGER__.safe_inspect(tp.return_value, short: true)) out tp, "<#{sp}#{call_identifier_str} #=> #{return_str}", depth end } end
def skip_with_pattern?(tp)
def skip_with_pattern?(tp) super && !tp.method_id&.match?(@pattern) end