module Tracetool::Android::NativeTraceEnhancer

Methods for stack trace string normalization

Constants

NATIVE_DUMP_HEADER

Default header for android backtrace

Public Instance Methods

add_header(string) click to toggle source

Add dummy header for stack trace body

# File lib/tracetool/android/native.rb, line 45
def add_header(string)
  NATIVE_DUMP_HEADER + sanitize(string)
end
unpack(trace) click to toggle source

Converts packed stack trace into ndk-stack compatible format @param [String] trace packed stack trace @return well formed stack trace

# File lib/tracetool/android/native.rb, line 37
def unpack(trace)
  dump_body = prepare(trace)
              .map
              .with_index { |line, index| convert_line(line, index) }
  add_header(dump_body.join("\n"))
end

Private Instance Methods

convert_line(line, index) click to toggle source
# File lib/tracetool/android/native.rb, line 55
def convert_line(line, index)
  frame = index
  addr = line[/^(-?\d+) (.*)$/, 1]
  lib = (line[/^(-?\d+) (.*)$/, 2] || '').strip # nil safe
  '    #%02<frame>i  pc %08<addr>x  %<lib>s'
    .format(frame: frame, addr: addr, lib: lib)
end
prepare(trace) click to toggle source
# File lib/tracetool/android/native.rb, line 51
def prepare(trace)
  trace.gsub('>>><<<', '')[/<<<(.+)>>>/, 1].split(';')
end
sanitize(string) click to toggle source

If needed here we'll drop all unneeded leading characters from each stack trace line. This may be needed to add NATIVE_DUMP_HEADER correctly

# File lib/tracetool/android/native.rb, line 66
def sanitize(string)
  string
end