File Manager
Viewing File: save.rb
require 'byebug/command'
module Byebug
#
# Save current settings to use them in another debug session.
#
class SaveCommand < Command
self.allow_in_control = true
self.allow_in_post_mortem = true
def self.regexp
/^\s* sa(?:ve)? (?:\s+(\S+))? \s*$/x
end
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
def self.short_description
'Saves current byebug session to a file'
end
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
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)
Byebug.catchpoints.keys.each do |c|
file.puts "catch #{c}"
end
end
def save_displays(file)
Byebug.displays.each { |d| file.puts "display #{d[1]}" if d[0] }
end
def save_settings(file)
%w(autoirb autolist basename).each do |setting|
file.puts "set #{setting} #{Setting[setting.to_sym]}"
end
end
end
end