# File cli/ruby-debug/commands/irb.rb, line 122
    def execute
      unless @state.interface.kind_of?(LocalInterface)
        print "Command is available only in local mode.\n"
        throw :debug_error
      end

      save_trap = trap("SIGINT") do
        throw :IRB_EXIT, :cont if $rdebug_in_irb
      end

      # add_debugging = @match.is_a?(Array) && '-d' == @match[1]
      $rdebug_state = @state
      $rdebug_in_irb = true
      cont = IRB.start_session(get_binding)
      case cont
      when :cont
        @state.proceed 
      when :step
        force = Command.settings[:force_stepping]
        @state.context.step(1, force)
        @state.proceed 
      when :next
        force = Command.settings[:force_stepping]
        @state.context.step_over(1, @state.frame_pos, force)
        @state.proceed 
      when :quit
        # FIXME: DRY with code from file/command quit.
        if confirm("Really quit? (y/n) ") 
          @state.interface.finalize
          exit! # exit -> exit!: No graceful way to stop threads...
        end
      else
        file = @state.context.frame_file(0)
        line = @state.context.frame_line(0)
        CommandProcessor.print_location_and_text(file, line)
        @state.previous_line = nil
      end

    ensure
      $rdebug_in_irb = nil
      $rdebug_state = nil
      trap("SIGINT", save_trap) if save_trap
    end