2010/9/18 Andriy Gapon <[email protected]>: > > Here's a small patch that adds support for printing stack trace in form of > frame > addresses when KDB_TRACE is enabled, but there is no debugger backend > configured. > The patch is styled after "cheap" variant of stack_ktr. > > What do you think (useful/useless, correct, etc) ? > > --- a/sys/kern/subr_kdb.c > +++ b/sys/kern/subr_kdb.c > @@ -37,6 +37,7 @@ > #include <sys/pcpu.h> > #include <sys/proc.h> > #include <sys/smp.h> > +#include <sys/stack.h> > #include <sys/sysctl.h> > > #include <machine/kdb.h> > @@ -295,10 +296,16 @@ > void > kdb_backtrace(void) > { > + struct stack st; > + int i; > > - if (kdb_dbbe != NULL && kdb_dbbe->dbbe_trace != NULL) { > - printf("KDB: stack backtrace:\n"); > + printf("KDB: stack backtrace:\n"); > + if (kdb_dbbe != NULL && kdb_dbbe->dbbe_trace != NULL) > kdb_dbbe->dbbe_trace(); > + else { > + stack_save(&st); > + for (i = 0; i < st.depth; i++) > + printf("#%d %p\n", i, (void*)(uintptr_t)st.pcs[i]); > } > }
You have to eventually wrap this logic within the 'STACK' option (opt_stack.h for the check) because stack_save() will be uneffective otherwise. STACK should be mandatory for DDB I guess, but it is not for KDB. Thanks, Attilio -- Peace can only be achieved by understanding - A. Einstein _______________________________________________ [email protected] mailing list http://lists.freebsd.org/mailman/listinfo/freebsd-hackers To unsubscribe, send any mail to "[email protected]"

