adding stack traces for scripts

This commit is contained in:
Alex Shinn 2010-07-07 21:14:27 +09:00
parent 34710bf44d
commit 3bfc6a2d8e
2 changed files with 2 additions and 1 deletions

2
eval.c
View file

@ -33,7 +33,7 @@ void sexp_stack_trace (sexp ctx, sexp out) {
sexp_write(ctx, sexp_bytecode_name(bc), out); sexp_write(ctx, sexp_bytecode_name(bc), out);
else else
sexp_printf(ctx, out, "anon: %p", bc); sexp_printf(ctx, out, "anon: %p", bc);
if ((ls=sexp_bytecode_source(bc))) { if ((ls=sexp_bytecode_source(bc)) && sexp_pairp(ls)) {
if (sexp_fixnump(sexp_cdr(ls)) && (sexp_cdr(ls) >= SEXP_ZERO)) { if (sexp_fixnump(sexp_cdr(ls)) && (sexp_cdr(ls) >= SEXP_ZERO)) {
sexp_write_string(ctx, " on line ", out); sexp_write_string(ctx, " on line ", out);
sexp_write(ctx, sexp_cdr(ls), out); sexp_write(ctx, sexp_cdr(ls), out);

1
main.c
View file

@ -74,6 +74,7 @@ static sexp check_exception (sexp ctx, sexp res) {
if (! sexp_oportp(err)) if (! sexp_oportp(err))
err = sexp_make_output_port(ctx, stderr, SEXP_FALSE); err = sexp_make_output_port(ctx, stderr, SEXP_FALSE);
sexp_print_exception(ctx, res, err); sexp_print_exception(ctx, res, err);
sexp_stack_trace(ctx, err);
exit_failure(); exit_failure();
} }
return res; return res;