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 15
def self.description
  <<-EOD
    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.
  EOD
end
regexp() click to toggle source
# File lib/byebug/commands/save.rb, line 11
def self.regexp
  /^\s* sa(?:ve)? (?:\s+(\S+))? \s*$/x
end
short_description() click to toggle source
# File lib/byebug/commands/save.rb, line 30
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 34
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 48
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 54
def save_catchpoints(file)
  Byebug.catchpoints.keys.each do |c|
    file.puts "catch #{c}"
  end
end
save_displays(file) click to toggle source
# File lib/byebug/commands/save.rb, line 60
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 64
def save_settings(file)
  %w(autoirb autolist basename).each do |setting|
    file.puts "set #{setting} #{Setting[setting.to_sym]}"
  end
end