Class Debugger::ControlCommandProcessor
In: cli/ruby-debug/processor.rb
Parent: Processor

A Debugger::ControlCommandProcessor is the kind of Debugger::Processor used the debugged program is running remotely. It is also entered after the debugged program has terminated.

Methods

Public Class methods

[Source]

     # File cli/ruby-debug/processor.rb, line 458
458:     def initialize(interface)
459:       super()
460:       @interface = interface
461:       @debugger_context_was_dead = true # Assume we haven't started.
462:     end

Public Instance methods

This the main debugger command-line loop. Here we read a debugger command, perform it, and ask for another one unless we are told to continue execution or terminate.

[Source]

     # File cli/ruby-debug/processor.rb, line 467
467:     def process_commands(verbose=false)
468:       control_cmds = Command.commands.select do |cmd| 
469:         cmd.allow_in_control 
470:       end
471:       state = State.new(@interface, control_cmds)
472:       @commands = control_cmds.map{|cmd| cmd.new(state) }
473: 
474:       unless @debugger_context_was_dead
475:         if Debugger.annotate.to_i > 2
476:           aprint 'exited'  
477:           print "The program finished.\n" 
478:         end
479:         @debugger_context_was_dead = true
480:       end
481: 
482:       while input = @interface.read_command(prompt(nil))
483:         print "+#{input}" if verbose
484:         catch(:debug_error) do
485:           if cmd = @commands.find{|c| c.match(input) }
486:             cmd.execute
487:           else
488:             errmsg "Unknown command\n"
489:           end
490:         end
491:       end
492:     rescue IOError, Errno::EPIPE
493:     rescue Exception
494:       print "INTERNAL ERROR!!! #{$!}\n" rescue nil
495:       print $!.backtrace.map{|l| "\t#{l}"}.join("\n") rescue nil
496:     ensure
497:       @interface.close
498:     end

Return a prompt string to show before reading a command. Note: The context parameter is not used. It must be provided so that the interface matches Debugger::CommandProcessor#prompt.

[Source]

     # File cli/ruby-debug/processor.rb, line 503
503:     def prompt(context)
504:       p = '(rdb:ctrl) '
505:       p = afmt("pre-prompt")+p+"\n"+afmt("prompt") if 
506:         Debugger.annotate.to_i > 2
507:       return p
508:     end

[Validate]