> On Jun 6, 2016, at 13:57, Bjoern A. Zeeb <b...@freebsd.org> wrote: > > Author: bz > Date: Mon Jun 6 20:57:24 2016 > New Revision: 301522 > URL: https://svnweb.freebsd.org/changeset/base/301522
Awesome -- thanks bz!!! > Log: > Implement a `show panic` command to DDB which will helpfully print the > panic string again if set, in case it scrolled out of the active > window. This avoids having to remember the symbol name. > > Also add a show callout <addr> command to DDB in order to inspect > some struct callout fields in case of panics in the callout code. > This may help to see if there was memory corruption or to further > ease debugging problems. > > Obtained from: projects/vnet > MFC after: 2 weeks > Sponsored by: The FreeBSD Foundation > Reviewed by: jhb (comment only on the show panic initally) > Differential Revision: https://reviews.freebsd.org/D4527 > > Modified: > head/share/man/man4/ddb.4 > head/sys/kern/kern_shutdown.c > head/sys/kern/kern_timeout.c > > Modified: head/share/man/man4/ddb.4 > ============================================================================== > --- head/share/man/man4/ddb.4 Mon Jun 6 20:42:54 2016 (r301521) > +++ head/share/man/man4/ddb.4 Mon Jun 6 20:57:24 2016 (r301522) > @@ -60,7 +60,7 @@ > .\" > .\" $FreeBSD$ > .\" > -.Dd May 18, 2016 > +.Dd June 6, 2016 > .Dt DDB 4 > .Os > .Sh NAME > @@ -599,6 +599,13 @@ See the > header file for more details on the exact meaning of the structure fields. > .\" > .Pp > +.It Ic show Cm callout Ar addr > +Show information about the callout structure > +.Vt struct callout > +present at > +.Ar addr . > +.\" > +.Pp > .It Ic show Cm cbstat > Show brief information about the TTY subsystem. > .\" > @@ -834,6 +841,10 @@ option is specified the > complete object is printed. > .\" > .Pp > +.It Ic show Cm panic > +Print the panic message if set. > +.\" > +.Pp > .It Ic show Cm page > Show statistics on VM pages. > .\" > > Modified: head/sys/kern/kern_shutdown.c > ============================================================================== > --- head/sys/kern/kern_shutdown.c Mon Jun 6 20:42:54 2016 (r301521) > +++ head/sys/kern/kern_shutdown.c Mon Jun 6 20:57:24 2016 (r301522) > @@ -929,3 +929,14 @@ mkdumpheader(struct kerneldumpheader *kd > strlcpy(kdh->panicstring, panicstr, sizeof(kdh->panicstring)); > kdh->parity = kerneldump_parity(kdh); > } > + > +#ifdef DDB > +DB_SHOW_COMMAND(panic, db_show_panic) > +{ > + > + if (panicstr == NULL) > + db_printf("panicstr not set\n"); > + else > + db_printf("panic: %s\n", panicstr); > +} > +#endif > > Modified: head/sys/kern/kern_timeout.c > ============================================================================== > --- head/sys/kern/kern_timeout.c Mon Jun 6 20:42:54 2016 (r301521) > +++ head/sys/kern/kern_timeout.c Mon Jun 6 20:57:24 2016 (r301522) > @@ -38,6 +38,7 @@ > __FBSDID("$FreeBSD$"); > > #include "opt_callout_profiling.h" > +#include "opt_ddb.h" > #if defined(__arm__) > #include "opt_timer.h" > #endif > @@ -60,6 +61,11 @@ __FBSDID("$FreeBSD$"); > #include <sys/sysctl.h> > #include <sys/smp.h> > > +#ifdef DDB > +#include <ddb/ddb.h> > +#include <machine/_inttypes.h> > +#endif > + > #ifdef SMP > #include <machine/cpu.h> > #endif > @@ -1615,3 +1621,34 @@ SYSCTL_PROC(_kern, OID_AUTO, callout_sta > CTLTYPE_INT | CTLFLAG_RW | CTLFLAG_MPSAFE, > 0, 0, sysctl_kern_callout_stat, "I", > "Dump immediate statistic snapshot of the scheduled callouts"); > + > +#ifdef DDB > +static void > +_show_callout(struct callout *c) > +{ > + > + db_printf("callout %p\n", c); > +#define C_DB_PRINTF(f, e) db_printf(" %s = " f "\n", #e, c->e); > + db_printf(" &c_links = %p\n", &(c->c_links)); > + C_DB_PRINTF("%" PRId64, c_time); > + C_DB_PRINTF("%" PRId64, c_precision); > + C_DB_PRINTF("%p", c_arg); > + C_DB_PRINTF("%p", c_func); > + C_DB_PRINTF("%p", c_lock); > + C_DB_PRINTF("%#x", c_flags); > + C_DB_PRINTF("%#x", c_iflags); > + C_DB_PRINTF("%d", c_cpu); > +#undef C_DB_PRINTF > +} > + > +DB_SHOW_COMMAND(callout, db_show_callout) > +{ > + > + if (!have_addr) { > + db_printf("usage: show callout <struct callout *>\n"); > + return; > + } > + > + _show_callout((struct callout *)addr); > +} > +#endif /* DDB */ > _______________________________________________ svn-src-head@freebsd.org mailing list https://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"