class Sentry::StacktraceBuilder

def build(backtrace:, &frame_callback)

Returns:
  • (StacktraceInterface) -

Other tags:
    Yieldparam: frame -

Parameters:
  • frame_callback (Proc) --
  • backtrace (Array) --
def build(backtrace:, &frame_callback)
  parsed_lines = parse_backtrace_lines(backtrace).select(&:file)
  frames = parsed_lines.reverse.map do |line|
    frame = convert_parsed_line_into_frame(line)
    frame = frame_callback.call(frame) if frame_callback
    frame
  end.compact
  StacktraceInterface.new(frames: frames)
end

def convert_parsed_line_into_frame(line)

def convert_parsed_line_into_frame(line)
  frame = StacktraceInterface::Frame.new(project_root, line)
  frame.set_context(linecache, context_lines) if context_lines
  frame
end

def initialize(project_root:, app_dirs_pattern:, linecache:, context_lines:, backtrace_cleanup_callback: nil)

Other tags:
    See: Configuration#backtrace_cleanup_callback -
    See: Configuration#context_lines -
    See: Configuration#linecache -
    See: Configuration#app_dirs_pattern -
    See: Configuration#project_root -

Parameters:
  • backtrace_cleanup_callback (Proc, nil) --
  • context_lines (Integer, nil) --
  • linecache (LineCache) --
  • app_dirs_pattern (Regexp, nil) --
  • project_root (String) --
def initialize(project_root:, app_dirs_pattern:, linecache:, context_lines:, backtrace_cleanup_callback: nil)
  @project_root = project_root
  @app_dirs_pattern = app_dirs_pattern
  @linecache = linecache
  @context_lines = context_lines
  @backtrace_cleanup_callback = backtrace_cleanup_callback
end

def parse_backtrace_lines(backtrace)

def parse_backtrace_lines(backtrace)
  Backtrace.parse(
    backtrace, project_root, app_dirs_pattern, &backtrace_cleanup_callback
  ).lines
end