class Sentry::StacktraceBuilder
def build(backtrace:, &frame_callback)
-
(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)
- 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