class Byebug::Breakpoint
Implements breakpoints
Public Class Methods
add(file, line, expr = nil)
click to toggle source
Adds a new breakpoint
@param [String] file @param [Fixnum] line @param [String] expr
# File lib/byebug/breakpoint.rb, line 27 def self.add(file, line, expr = nil) breakpoint = Breakpoint.new(file, line, expr) Byebug.breakpoints << breakpoint breakpoint end
first()
click to toggle source
First breakpoint, in order of creation
# File lib/byebug/breakpoint.rb, line 9 def self.first Byebug.breakpoints.first end
last()
click to toggle source
Last breakpoint, in order of creation
# File lib/byebug/breakpoint.rb, line 16 def self.last Byebug.breakpoints.last end
none?()
click to toggle source
True if there's no breakpoints
# File lib/byebug/breakpoint.rb, line 76 def self.none? Byebug.breakpoints.empty? end
potential_line?(filename, lineno)
click to toggle source
Returns true if a breakpoint could be set in line number
lineno
in file name +filename.
# File lib/byebug/breakpoint.rb, line 69 def self.potential_line?(filename, lineno) potential_lines(filename).member?(lineno) end
potential_lines(filename)
click to toggle source
Returns an array of line numbers in file named filename
where
breakpoints could be set. The list will contain an entry for each distinct
line event call so it is possible (and possibly useful) for a line number
appear more than once.
@param filename [String] File name to inspect for possible breakpoints
# File lib/byebug/breakpoint.rb, line 50 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
remove(id)
click to toggle source
Removes a breakpoint
@param [integer] breakpoint number
# File lib/byebug/breakpoint.rb, line 38 def self.remove(id) Byebug.breakpoints.reject! { |b| b.id == id } end
Public Instance Methods
inspect()
click to toggle source
Prints all information associated to the breakpoint
# File lib/byebug/breakpoint.rb, line 83 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