svn commit: r301522 - in head: share/man/man4 sys/kern

Ngie Cooper yaneurabeya at gmail.com
Tue Jun 7 01:42:28 UTC 2016


> On Jun 6, 2016, at 13:57, Bjoern A. Zeeb <bz at 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 */
> 


More information about the svn-src-head mailing list