class Byebug::Breakpoint
Implements breakpoints
def self.add(file, line, expr = nil)
-
expr
(String
) -- -
line
(Fixnum
) -- -
file
(String
) --
def self.add(file, line, expr = nil) breakpoint = Breakpoint.new(file, line, expr) Byebug.breakpoints << breakpoint breakpoint end
def self.first
First breakpoint, in order of creation
def self.first Byebug.breakpoints.first end
def self.last
Last breakpoint, in order of creation
def self.last Byebug.breakpoints.last end
def self.none?
True if there's no breakpoints
def self.none? Byebug.breakpoints.empty? end
def self.potential_line?(filename, lineno)
name +filename.
Returns true if a breakpoint could be set in line number +lineno+ in file
def self.potential_line?(filename, lineno) potential_lines(filename).member?(lineno) end
def self.potential_lines(filename)
-
filename
(String
) -- File name to inspect for possible breakpoints
def self.potential_lines(filename) name = "#{Time.new.to_i}_#{rand(2**31)}" lines = {} iseq = RubyVM::InstructionSequence.compile(File.read(filename), name) iseq.disasm.each_line do |line| res = /^\d+ (?<insn>\w+)\s+.+\(\s*(?<lineno>\d+)\)$/.match(line) next unless res && res[:insn] == 'trace' lines[res[:lineno].to_i] = true end lines.keys end
def self.remove(id)
-
id
(integer
) -- breakpoint number
def self.remove(id) Byebug.breakpoints.reject! { |b| b.id == id } end
def inspect
Prints all information associated to the breakpoint
def inspect meths = %w(id pos source expr hit_condition hit_count hit_value enabled?) values = meths.map do |field| "#{field}: #{send(field)}" end.join(', ') "#<Byebug::Breakpoint #{values}>" end