The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/ddb/db_trap.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $OpenBSD: db_trap.c,v 1.30 2019/11/06 07:30:08 mpi Exp $        */
    2 /*      $NetBSD: db_trap.c,v 1.9 1996/02/05 01:57:18 christos Exp $     */
    3 
    4 /*
    5  * Mach Operating System
    6  * Copyright (c) 1993,1992,1991,1990 Carnegie Mellon University
    7  * All Rights Reserved.
    8  *
    9  * Permission to use, copy, modify and distribute this software and its
   10  * documentation is hereby granted, provided that both the copyright
   11  * notice and this permission notice appear in all copies of the
   12  * software, derivative works or modified versions, and any portions
   13  * thereof, and that both notices appear in supporting documentation.
   14  *
   15  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
   16  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
   17  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
   18  *
   19  * Carnegie Mellon requests users of this software to return to
   20  *
   21  *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU
   22  *  School of Computer Science
   23  *  Carnegie Mellon University
   24  *  Pittsburgh PA 15213-3890
   25  *
   26  * any improvements or extensions that they make and grant Carnegie Mellon
   27  * the rights to redistribute these changes.
   28  *
   29  *      Author: David B. Golub, Carnegie Mellon University
   30  *      Date:   7/90
   31  */
   32 
   33 /*
   34  * Trap entry point to kernel debugger.
   35  */
   36 #include <sys/param.h>
   37 #include <sys/systm.h>
   38 
   39 #include <machine/db_machdep.h>
   40 
   41 #include <ddb/db_run.h>
   42 #include <ddb/db_command.h>
   43 #include <ddb/db_output.h>
   44 #include <ddb/db_sym.h>
   45 #include <ddb/db_extern.h>
   46 #include <ddb/db_interface.h>
   47 #include <ddb/db_var.h>
   48 
   49 void
   50 db_trap(int type, int code)
   51 {
   52         int     bkpt;
   53         int     watchpt;
   54 
   55         bkpt = IS_BREAKPOINT_TRAP(type, code);
   56         watchpt = IS_WATCHPOINT_TRAP(type, code);
   57 
   58         if (db_stop_at_pc(&ddb_regs, &bkpt)) {
   59                 if (db_inst_count) {
   60                         db_printf("After %d instructions\n", db_inst_count);
   61                 }
   62                 if (bkpt)
   63                         db_printf("Breakpoint at\t");
   64                 else if (watchpt)
   65                         db_printf("Watchpoint at\t");
   66                 else
   67                         db_printf("Stopped at\t");
   68                 db_dot = PC_REGS(&ddb_regs);
   69                 db_print_loc_and_inst(db_dot);
   70 
   71                 if (panicstr != NULL) {
   72                         static int ddb_msg_shown;
   73 
   74                         if (! ddb_msg_shown) {
   75                                 /* show on-proc threads */
   76                                 db_show_all_procs(0, 0, 0, "o");
   77                         }
   78                         /* then the backtrace */
   79                         db_stack_trace_print(db_dot, 0, 14 /* arbitrary */, "",
   80                             db_printf);
   81 
   82                         if (db_print_position() != 0)
   83                                 db_printf("\n");
   84                         if (! ddb_msg_shown) {
   85                                 db_printf(
   86 "https://www.openbsd.org/ddb.html describes the minimum info required in bug\n"
   87 "reports.  Insufficient info makes it difficult to find and fix bugs.\n");
   88                                 ddb_msg_shown = 1;
   89                         }
   90                 }
   91 
   92                 db_command_loop();
   93         }
   94 
   95         db_restart_at_pc(&ddb_regs, watchpt);
   96 }

Cache object: 87dcd0873f888b43f0c229fbdc4c563c


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.