class Byebug::InfoCommand::BreakpointsCommand

Information about current breakpoints

Public Class Methods

description() click to toggle source
# File lib/byebug/commands/info/breakpoints.rb, line 17
      def self.description
        <<-DESCRIPTION
          inf[o] b[reakpoints]

          #{short_description}
        DESCRIPTION
      end
regexp() click to toggle source
# File lib/byebug/commands/info/breakpoints.rb, line 13
def self.regexp
  /^\s* b(?:reakpoints)? (?:\s+ (.+))? \s*$/x
end
short_description() click to toggle source
# File lib/byebug/commands/info/breakpoints.rb, line 25
def self.short_description
  "Status of user settable breakpoints"
end

Public Instance Methods

execute() click to toggle source
# File lib/byebug/commands/info/breakpoints.rb, line 29
def execute
  return puts("No breakpoints.") if Byebug.breakpoints.empty?

  breakpoints = Byebug.breakpoints.sort_by(&:id)

  if @match[1]
    indices = @match[1].split(/ +/).map(&:to_i)
    breakpoints = breakpoints.select { |b| indices.member?(b.id) }
    return errmsg("No breakpoints found among list given") if breakpoints.empty?
  end

  puts "Num Enb What"
  breakpoints.each { |b| info_breakpoint(b) }
end

Private Instance Methods

info_breakpoint(brkpt) click to toggle source
# File lib/byebug/commands/info/breakpoints.rb, line 46
def info_breakpoint(brkpt)
  interp = format(
    "%-<id>3d %-<status>3s at %<file>s:%<line>s%<expression>s",
    id: brkpt.id,
    status: brkpt.enabled? ? "y" : "n",
    file: brkpt.source,
    line: brkpt.pos,
    expression: brkpt.expr.nil? ? "" : " if #{brkpt.expr}"
  )
  puts interp
  hits = brkpt.hit_count
  return unless hits.positive?

  s = hits > 1 ? "s" : ""
  puts "  breakpoint already hit #{hits} time#{s}"
end