class Byebug::CommandProcessor
Processes commands in regular mode.
You can override this class to create your own command processor that, for example, whitelists only certain commands to be executed.
@see PostMortemProcessor for a example
Attributes
context[R]
prev_line[RW]
Public Class Methods
new(context)
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 21 def initialize(context) @context = context @proceed = false @prev_line = nil end
Public Instance Methods
at_breakpoint(brkpt)
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 58 def at_breakpoint(brkpt) number = Byebug.breakpoints.index(brkpt) + 1 puts "Stopped by breakpoint #{number} at #{frame.file}:#{frame.line}" end
at_catchpoint(exception)
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 64 def at_catchpoint(exception) puts "Catchpoint at #{context.location}: `#{exception}'" end
at_line()
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 74 def at_line process_commands end
at_return()
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 78 def at_return process_commands end
at_tracing()
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 68 def at_tracing puts "Tracing: #{context.full_location}" run_auto_commands(2) end
command_list()
click to toggle source
Available commands
# File lib/byebug/processors/command_processor.rb, line 50 def command_list @command_list ||= CommandList.new(commands) end
commands()
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 54 def commands Byebug.commands end
frame()
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 36 def frame @context.frame end
interface()
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 28 def interface @interface ||= context.class.interface end
printer()
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 32 def printer @printer ||= Printers::Plain.new end
proceed!()
click to toggle source
Let the execution continue
# File lib/byebug/processors/command_processor.rb, line 85 def proceed! @proceed = true end
process_commands()
click to toggle source
Handle byebug commands.
# File lib/byebug/processors/command_processor.rb, line 92 def process_commands before_repl repl ensure after_repl end
Protected Instance Methods
prompt()
click to toggle source
Prompt shown before reading a command.
# File lib/byebug/processors/command_processor.rb, line 105 def prompt '(byebug) ' end
Private Instance Methods
after_repl()
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 130 def after_repl interface.autosave end
auto_commands_for(run_level)
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 111 def auto_commands_for(run_level) command_list.select { |cmd| cmd.always_run >= run_level } end
before_repl()
click to toggle source
# File lib/byebug/processors/command_processor.rb, line 122 def before_repl @proceed = false @prev_line = nil run_auto_commands(1) interface.autorestore end
repl()
click to toggle source
Main byebug's REPL
# File lib/byebug/processors/command_processor.rb, line 137 def repl until @proceed cmd = interface.read_command(prompt) return if cmd.nil? next if cmd == '' run_cmd(cmd) end end
run_auto_commands(run_level)
click to toggle source
Run permanent commands.
# File lib/byebug/processors/command_processor.rb, line 118 def run_auto_commands(run_level) auto_commands_for(run_level).each { |cmd| cmd.new(self).execute } end
run_cmd(input)
click to toggle source
Executes the received input
Instantiates a command matching the input and runs it. If a matching command is not found, it evaluates the unknown input.
# File lib/byebug/processors/command_processor.rb, line 154 def run_cmd(input) command = command_list.match(input) return command.new(self, input).execute if command puts thread_safe_eval(input) rescue => e errmsg(e.message) end