class Byebug::SaveCommand
def execute
def execute if not @match[1] or @match[1].strip.empty? file = open_save() else file = open(@match[1], 'w') end save_breakpoints(file) save_catchpoints(file) # save_displays(file) save_settings(file) print "Saved to '#{file.path}'\n" if @state and @state.interface @state.interface.restart_file = file.path end file.close end
def help(cmd)
def help(cmd) %{ FILE] current byebug state to FILE as a script file. ncludes breakpoints, catchpoints, display expressions and some settings. filename is given, we will fabricate one. e 'source' command in another debug session to restore them.} end
def help_command
def help_command 'save' end
def regexp
def regexp /^\s* sa(?:ve)? (?:\s+(.+))? \s*$/ix end
def save_breakpoints(file)
def save_breakpoints(file) Byebug.breakpoints.each do |b| file.puts "break #{b.source}:#{b.pos}#{" if #{b.expr}" if b.expr}" end end
def save_catchpoints(file)
def save_catchpoints(file) Byebug.catchpoints.keys.each do |c| file.puts "catch #{c}" end end
def save_displays(file)
def save_displays(file) for d in @state.display if d[0] file.puts "display #{d[1]}" end end end
def save_settings(file)
def save_settings(file) # FIXME put routine in set %w(autoeval basename byebugtesting).each do |setting| on_off = show_onoff(Command.settings[setting.to_sym]) file.puts "set #{setting} #{on_off}" end %w(autolist autoirb).each do |setting| on_off = show_onoff(Command.settings[setting.to_sym] > 0) file.puts "set #{setting} #{on_off}" end end