class Byebug::Breakpoint

def self.potential_lines(filename)

Parameters:
  • filename (String) -- File name to inspect for possible breakpoints
def self.potential_lines(filename)
  name, lines = "#{Time.new.to_i}_#{rand(2**31)}", {}
  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