# File cli/ruby-debug/processor.rb, line 467
    def process_commands(verbose=false)
      control_cmds = Command.commands.select do |cmd| 
        cmd.allow_in_control 
      end
      state = State.new(@interface, control_cmds)
      @commands = control_cmds.map{|cmd| cmd.new(state) }

      unless @debugger_context_was_dead
        if Debugger.annotate.to_i > 2
          aprint 'exited'  
          print "The program finished.\n" 
        end
        @debugger_context_was_dead = true
      end

      while input = @interface.read_command(prompt(nil))
        print "+#{input}" if verbose
        catch(:debug_error) do
          if cmd = @commands.find{|c| c.match(input) }
            cmd.execute
          else
            errmsg "Unknown command\n"
          end
        end
      end
    rescue IOError, Errno::EPIPE
    rescue Exception
      print "INTERNAL ERROR!!! #{$!}\n" rescue nil
      print $!.backtrace.map{|l| "\t#{l}"}.join("\n") rescue nil
    ensure
      @interface.close
    end