class Byebug::SaveCommand

Save current settings to use them in another debug session.

Public Class Methods

description() click to toggle source
# File lib/byebug/commands/save.rb, line 16
    def self.description
      <<-DESCRIPTION
        save[ FILE]

        #{short_description}

        Byebug state is saved as a script file. This includes breakpoints,
        catchpoints, display expressions and some settings. If no filename is
        given, byebug will fabricate one.

        Use the "source" command in another debug session to restore the saved
        file.
      DESCRIPTION
    end
regexp() click to toggle source
# File lib/byebug/commands/save.rb, line 12
def self.regexp
  /^\s* sa(?:ve)? (?:\s+(\S+))? \s*$/x
end
short_description() click to toggle source
# File lib/byebug/commands/save.rb, line 31
def self.short_description
  "Saves current byebug session to a file"
end

Public Instance Methods

execute() click to toggle source
# File lib/byebug/commands/save.rb, line 35
def execute
  file = File.open(@match[1] || Setting[:savefile], "w")

  save_breakpoints(file)
  save_catchpoints(file)
  save_displays(file)
  save_settings(file)

  print pr("save.messages.done", path: file.path)
  file.close
end

Private Instance Methods

save_breakpoints(file) click to toggle source
# File lib/byebug/commands/save.rb, line 49
def save_breakpoints(file)
  Byebug.breakpoints.each do |b|
    file.puts "break #{b.source}:#{b.pos}#{" if #{b.expr}" if b.expr}"
  end
end
save_catchpoints(file) click to toggle source
# File lib/byebug/commands/save.rb, line 55
def save_catchpoints(file)
  Byebug.catchpoints.each_key do |c|
    file.puts "catch #{c}"
  end
end
save_displays(file) click to toggle source
# File lib/byebug/commands/save.rb, line 61
def save_displays(file)
  Byebug.displays.each { |d| file.puts "display #{d[1]}" if d[0] }
end
save_settings(file) click to toggle source
# File lib/byebug/commands/save.rb, line 65
def save_settings(file)
  %w[autoirb autolist basename].each do |setting|
    file.puts "set #{setting} #{Setting[setting.to_sym]}"
  end
end