mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
show all callinfo's.
This commit is contained in:
@@ -189,6 +189,7 @@ exc_debug_info(mrb_state *mrb, struct RObject *exc)
|
||||
mrb_callinfo *ci = mrb->ci;
|
||||
mrb_code *pc = ci->pc;
|
||||
|
||||
mrb_obj_iv_set(mrb, exc, mrb_intern(mrb, "ciidx"), mrb_fixnum_value(ci - mrb->cibase));
|
||||
ci--;
|
||||
while (ci >= mrb->cibase) {
|
||||
if (ci->proc && !MRB_PROC_CFUNC_P(ci->proc)) {
|
||||
|
||||
@@ -169,9 +169,6 @@ cipush(mrb_state *mrb)
|
||||
mrb->ci->eidx = eidx;
|
||||
mrb->ci->ridx = ridx;
|
||||
mrb->ci->env = 0;
|
||||
if (mrb->ci + 1 != mrb->ciend) {
|
||||
mrb->ci[1].mid = 0;
|
||||
}
|
||||
return mrb->ci;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -166,14 +166,14 @@ static void
|
||||
showcallinfo(mrb_state *mrb)
|
||||
{
|
||||
mrb_callinfo *ci;
|
||||
mrb_int ciidx;
|
||||
const char *filename, *sep;
|
||||
int i;
|
||||
|
||||
printf("trace:\n");
|
||||
for (i = 1; &mrb->cibase[i] < mrb->ciend; i++) {
|
||||
ciidx = mrb_fixnum(mrb_obj_iv_get(mrb, mrb->exc, mrb_intern(mrb, "ciidx")));
|
||||
for (i = 1; i <= ciidx; i++) {
|
||||
ci = &mrb->cibase[i];
|
||||
if (ci->mid == 0)
|
||||
break;
|
||||
|
||||
if (MRB_PROC_CFUNC_P(ci->proc))
|
||||
filename = "(cfunc)";
|
||||
|
||||
Reference in New Issue
Block a user