class DEBUGGER__::ThreadClient
def make_breakpoint args
def make_breakpoint args case args.first when :method klass_name, op, method_name, cond, cmd, path = args[1..] bp = MethodBreakpoint.new(current_frame&.eval_binding || TOPLEVEL_BINDING, klass_name, op, method_name, cond: cond, command: cmd, path: path) begin bp.enable rescue NameError => e if bp.klass puts "Unknown method name: \"#{e.name}\"" else # klass_name can not be evaluated if constant_name? klass_name puts "Unknown constant name: \"#{e.name}\"" else # only Class name is allowed puts "Not a constant name: \"#{klass_name}\"" bp = nil end end Session.activate_method_added_trackers if bp rescue Exception => e puts e.inspect bp = nil end bp when :watch ivar, object, result, cond, command, path = args[1..] WatchIVarBreakpoint.new(ivar, object, result, cond: cond, command: command, path: path) else raise "unknown breakpoint: #{args}" end end