# 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 58
    def description
      prettify <<-EOD
        save[ FILE]

        Saves current byebug state to FILE as a script file. This includes
        breakpoints, catchpoints, display expressions and some settings. If
        no filename is given, we will fabricate one.

        Use the "source" command in another debug session to restore them.
      EOD
    end

names() click to toggle source

    # File lib/byebug/commands/save.rb, line 54
    def names
      %w(save)
    end

### Public Instance Methods

execute() click to toggle source

    # File lib/byebug/commands/save.rb, line 41
    def execute
      file = File.open(@match[1] || RESTART_FILE, 'w')

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

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

regexp() click to toggle source

    # File lib/byebug/commands/save.rb, line 37
    def regexp
      /^\s* sa(?:ve)? (?:\s+(\S+))? \s*$/x
    end

save_breakpoints(file) click to toggle source

    # File lib/byebug/commands/save.rb, line 15
    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 21
    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 27
    def save_displays(file)
      @state.display.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 31
    def save_settings(file)
      %w(autoeval autoirb autolist basename).each do |setting|
        file.puts "set #{setting} #{Setting[setting.to_sym]}"
      end
    end