From ea9b1734fd4c6bc51c62e3283c1903ea9092c167 Mon Sep 17 00:00:00 2001 From: Jesse McDonald Date: Sun, 22 Nov 2009 18:37:20 -0600 Subject: [PATCH] Improve trace output, for debugging. --- gc.c | 9 ++++++++- interp.c | 10 ++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/gc.c b/gc.c index 494da26..ecadfd8 100644 --- a/gc.c +++ b/gc.c @@ -1002,6 +1002,7 @@ static void _fprint_value(FILE *f, value_t v, seen_value_t *seen) else if (is_byte_string(v)) { byte_string_t *str = _get_byte_string(v); + size_t written = 0; fputc('"', f); @@ -1010,11 +1011,17 @@ static void _fprint_value(FILE *f, value_t v, seen_value_t *seen) int ch = str->bytes[i]; if (isprint(ch) && (ch != '\\') && (ch != '\"')) + { fputc(str->bytes[i], f); + ++written; + } else + { fprintf(f, "\\x%.2X", (int)str->bytes[i]); + written += 4; + } - if (i >= 20) + if (written >= 20) { fputs("...", f); break; diff --git a/interp.c b/interp.c index 03f9d2a..bc954a7 100644 --- a/interp.c +++ b/interp.c @@ -88,11 +88,13 @@ value_t run_interpreter(value_t lambda, value_t argv) */ #if 0 - fprint_value(stderr, state.lambda.value); fputc('\n', stderr); - fprint_value(stderr, state.argv.value); fputc('\n', stderr); - fprint_value(stderr, state.k.value); fputc('\n', stderr); - fprint_value(stderr, state.ctx.value); fputc('\n', stderr); + fflush(stdout); + fputs("LAMBDA: ", stderr); fprint_value(stderr, state.lambda.value); fputc('\n', stderr); + fputs("ARGLIST: ", stderr); fprint_value(stderr, state.argv.value); fputc('\n', stderr); + fputs("CONT'N: ", stderr); fprint_value(stderr, state.k.value); fputc('\n', stderr); + fputs("CONTEXT: ", stderr); fprint_value(stderr, state.ctx.value); fputc('\n', stderr); fputc('\n', stderr); + fflush(stderr); #endif if (is_builtin_fn(state.lambda.value))