class RbBCC::StackTrace
Constants
- BPF_F_STACK_BUILD_ID
- BPF_STACK_BUILD_ID_EMPTY
- BPF_STACK_BUILD_ID_IP
- BPF_STACK_BUILD_ID_VALID
- MAX_DEPTH
Public Instance Methods
get_stack(stack_id)
click to toggle source
# File lib/rbbcc/table.rb, line 392 def get_stack(stack_id) key = stack_id.is_a?(Fiddle::Pointer) ? stack_id : byref(stack_id, @keysize) leaftype.new(self[stack_id]) end
walk(stack_id, resolve: nil, &blk)
click to toggle source
# File lib/rbbcc/table.rb, line 397 def walk(stack_id, resolve: nil, &blk) addrs = if (flags & BPF_F_STACK_BUILD_ID).nonzero? get_stack(stack_id).trace[0..MAX_DEPTH] else get_stack(stack_id).ip[0..MAX_DEPTH] end addrs.each do |addr| break if addr.zero? if resolve blk.call(resolve.call(addr)) else blk.call(addr) end end end