Improve trace output, for debugging.

This commit is contained in:
Jesse D. McDonald 2009-11-22 18:37:20 -06:00
parent 601aa9db67
commit ea9b1734fd
2 changed files with 14 additions and 5 deletions

9
gc.c
View File

@ -1002,6 +1002,7 @@ static void _fprint_value(FILE *f, value_t v, seen_value_t *seen)
else if (is_byte_string(v)) else if (is_byte_string(v))
{ {
byte_string_t *str = _get_byte_string(v); byte_string_t *str = _get_byte_string(v);
size_t written = 0;
fputc('"', f); fputc('"', f);
@ -1010,11 +1011,17 @@ static void _fprint_value(FILE *f, value_t v, seen_value_t *seen)
int ch = str->bytes[i]; int ch = str->bytes[i];
if (isprint(ch) && (ch != '\\') && (ch != '\"')) if (isprint(ch) && (ch != '\\') && (ch != '\"'))
{
fputc(str->bytes[i], f); fputc(str->bytes[i], f);
++written;
}
else else
{
fprintf(f, "\\x%.2X", (int)str->bytes[i]); fprintf(f, "\\x%.2X", (int)str->bytes[i]);
written += 4;
}
if (i >= 20) if (written >= 20)
{ {
fputs("...", f); fputs("...", f);
break; break;

View File

@ -88,11 +88,13 @@ value_t run_interpreter(value_t lambda, value_t argv)
*/ */
#if 0 #if 0
fprint_value(stderr, state.lambda.value); fputc('\n', stderr); fflush(stdout);
fprint_value(stderr, state.argv.value); fputc('\n', stderr); fputs("LAMBDA: ", stderr); fprint_value(stderr, state.lambda.value); fputc('\n', stderr);
fprint_value(stderr, state.k.value); fputc('\n', stderr); fputs("ARGLIST: ", stderr); fprint_value(stderr, state.argv.value); fputc('\n', stderr);
fprint_value(stderr, state.ctx.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); fputc('\n', stderr);
fflush(stderr);
#endif #endif
if (is_builtin_fn(state.lambda.value)) if (is_builtin_fn(state.lambda.value))