class Babeltrace2::BTError

Public Instance Methods

cause_count()
Alias for: get_cause_count
causes() click to toggle source
# File lib/babeltrace2/error-reporting.rb, line 316
def causes
  get_cause_count.times.collect { |i|
    ref = Babeltrace2.bt_error_borrow_cause_by_index(@handle, i)
    Cause.new(ref)
  }
end
exception_params() click to toggle source
# File lib/babeltrace2/error-reporting.rb, line 343
def exception_params()
  klass = nil
  message = nil
  backtrace = []
  cs = causes
  return [klass, message, backtrace] if cs.empty?
  c = cs.first
  mess = c.message
  m = mess.match(/ ::(.*?): (.*)/m)
  if m
    klass = m[1]
    message = m[2]
    mess.sub!( m[0], "" )
  end
  item = ""
  item << c.file_name << ":"
  item << c.line_number.to_s
  item << (mess.match(/:in /) ? mess : Babeltrace2.verbose? ? " :: " << mess : ".")
  backtrace.push(item)
  cs[1..-1].each { |c|
    item = ""
    item << c.file_name << ":"
    item << c.line_number.to_s
    mess = c.message
    item << (mess.match(/:in /) ? mess : Babeltrace2.verbose? ? " :: " << mess : ".")
    backtrace.push(item)
  }
  [klass, message, backtrace]
end
get_cause_by_index(indx) click to toggle source
# File lib/babeltrace2/error-reporting.rb, line 310
def get_cause_by_index(indx)
  return nil unless indx < get_cause_count
  ref = Babeltrace2.bt_error_borrow_cause_by_index(@handle, indx)
  Cause.new(ref)
end
get_cause_count() click to toggle source
# File lib/babeltrace2/error-reporting.rb, line 304
def get_cause_count
  raise Error.new("Error already released") unless @handle
  Babeltrace2.bt_error_get_cause_count(@handle)
end
Also aliased as: cause_count
release() click to toggle source
# File lib/babeltrace2/error-reporting.rb, line 323
def release
  raise Error.new("Error already released") unless @handle
  Babeltrace2.bt_error_release(@handle)
  @handle = nil
end
to_s() click to toggle source
# File lib/babeltrace2/error-reporting.rb, line 329
def to_s
  str = ""
  causes.each { |c|
    file_name = c.file_name
    line_number = c.line_number
    str << file_name << ":" if file_name
    str << line_number.to_s << ":" if line_number
    str << " "
    str << c.message
    str << "\n"
  }
  str
end