X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fruntime%2Fprint.c;h=da8744eb0862fe0f4000508bccfc2e82f7931102;hb=1d06300e09f767a38bbe6d5b38232ca334ab1913;hp=e50da2ec5aaa2df376a1ec004b2acdec5bfd41b7;hpb=ebb604b4422ba886e70ce2e531c1f4d28d44e721;p=sbcl.git diff --git a/src/runtime/print.c b/src/runtime/print.c index e50da2e..da8744e 100644 --- a/src/runtime/print.c +++ b/src/runtime/print.c @@ -27,6 +27,7 @@ #include #include "thread.h" /* genesis/primitive-objects.h needs this */ #include +#include /* FSHOW and odxprint provide debugging output for low-level information * (signal handling, exceptions, safepoints) which is hard to debug by @@ -69,10 +70,16 @@ dyndebug_init() dyndebug_init1(misc, "MISC"); dyndebug_init1(pagefaults, "PAGEFAULTS"); + int n_output_flags = n; + dyndebug_init1(backtrace_when_lost, "BACKTRACE_WHEN_LOST"); + dyndebug_init1(sleep_when_lost, "SLEEP_WHEN_LOST"); + if (n != DYNDEBUG_NFLAGS) fprintf(stderr, "Bug in dyndebug_init\n"); +#if defined(LISP_FEATURE_GENCGC) gencgc_verbose = dyndebug_config.dyndebug_gencgc_verbose; +#endif char *featurelist = getenv("SBCL_DYNDEBUG"); if (featurelist) { @@ -84,7 +91,7 @@ dyndebug_init() if (!token) break; unsigned i; if (!strcmp(token, "all")) - for (i = 0; i < DYNDEBUG_NFLAGS; i++) + for (i = 0; i < n_output_flags; i++) *ptrs[i] = 1; else { for (i = 0; i < DYNDEBUG_NFLAGS; i++) @@ -104,8 +111,11 @@ dyndebug_init() fprintf(stderr, "Valid flags are:\n"); fprintf(stderr, " all ;enables all of the following:\n"); unsigned i; - for (i = 0; i < DYNDEBUG_NFLAGS; i++) + for (i = 0; i < DYNDEBUG_NFLAGS; i++) { + if (i == n_output_flags) + fprintf(stderr, "Additional options:\n"); fprintf(stderr, " %s\n", names[i]); + } } } @@ -118,6 +128,8 @@ dyndebug_init() * be restored to its full win32 branch functionality, where output to a * file or to the debugger can be selected at runtime. */ +void vodxprint_fun(const char *, va_list); + void odxprint_fun(const char *fmt, ...) {