예제 #1
0
파일: backtrace.c 프로젝트: kelcecil/mruby
void
mrb_print_backtrace(mrb_state *mrb)
{
#ifdef ENABLE_STDIO
  exc_output_backtrace(mrb, mrb->exc, print_backtrace_i, (void*)stderr);
#endif
}
예제 #2
0
파일: backtrace.c 프로젝트: kelcecil/mruby
mrb_value
mrb_exc_backtrace(mrb_state *mrb, mrb_value self)
{
  mrb_value ary;

  ary = mrb_ary_new(mrb);
  exc_output_backtrace(mrb, mrb_obj_ptr(self), get_backtrace_i, (void*)mrb_ary_ptr(ary));

  return ary;
}
예제 #3
0
파일: backtrace.c 프로젝트: Asmod4n/mruby
MRB_API void
mrb_print_backtrace(mrb_state *mrb)
{
  struct print_backtrace_args args;

  if (!mrb->exc || mrb_obj_is_kind_of(mrb, mrb_obj_value(mrb->exc), E_SYSSTACK_ERROR)) {
    return;
  }

  args.stream = stderr;
  args.tracehead = TRUE;
  exc_output_backtrace(mrb, mrb->exc, print_backtrace_i, (void*)&args);
}
예제 #4
0
파일: backtrace.c 프로젝트: okkez/mruby
MRB_API void
mrb_print_backtrace(mrb_state *mrb)
{
  mrb_value backtrace;

  if (!mrb->exc) {
    return;
  }

  backtrace = mrb_obj_iv_get(mrb, mrb->exc, mrb_intern_lit(mrb, "backtrace"));
  if (!mrb_nil_p(backtrace)) {
    print_backtrace(mrb, backtrace);
  }
  else if (mrb->backtrace.n > 0) {
    print_backtrace_saved(mrb);
  }
  else {
    struct print_backtrace_args args;
    args.stream = stderr;
    args.tracehead = TRUE;
    exc_output_backtrace(mrb, mrb->exc, print_backtrace_i, (void*)&args);
  }
}