1 /* Copyright (c) 1982 Regents of the University of California */ 2 3 /* static char sccsid[] = "@(#)breakpoint.h 1.2 01/18/82"; */ 4 5 /* 6 * Breakpoint module definitions. 7 * 8 * This module contains routines that manage breakpoints at a high level. 9 * This includes adding and deleting breakpoints, handling the various 10 * types of breakpoints when they happen, management of conditions for 11 * breakpoints, and display information after single stepping. 12 */ 13 14 unsigned short tracing; 15 unsigned short var_tracing; 16 unsigned short inst_tracing; 17 18 BOOLEAN isstopped; 19 20 #define ss_lines (tracing != 0) 21 #define ss_variables (var_tracing != 0) 22 #define ss_instructions (inst_tracing != 0) 23 #define single_stepping (ss_lines || ss_variables || ss_instructions) 24 25 /* 26 * types of breakpoints 27 */ 28 29 typedef enum { 30 ALL_ON, /* turn TRACE on */ 31 ALL_OFF, /* turn TRACE off */ 32 INST, /* trace instruction (source line) */ 33 CALL, RETURN, /* trace procedure/function */ 34 BLOCK_ON, /* set CALL breakpoint */ 35 BLOCK_OFF, /* clear CALL breakpoint */ 36 TERM_ON, /* turn TRACEVAR on */ 37 TERM_OFF, /* turn TRACEVAR off */ 38 AT_BP, /* print expression at a line */ 39 STOP_BP, /* stop execution */ 40 CALLPROC, /* return from a "call"-ed procedure */ 41 END_BP, /* return from program */ 42 STOP_ON, /* start looking for stop condition */ 43 STOP_OFF, /* stop looking for stop condition */ 44 } BPTYPE; 45 46 /* 47 * Things that are on the tracing or condition list are either 48 * associated with the trace (implying printing) or stop commands. 49 */ 50 51 typedef enum { TRPRINT, TRSTOP } TRTYPE; 52 53 /* 54 * routines available from this module 55 */ 56 57 addvar(); /* add a variable to the trace list */ 58 delvar(); /* delete a variable from the trace list */ 59 printvarnews(); /* print out variables that have changed */ 60 trfree(); /* free the entire trace list */ 61 addcond(); /* add a condition to the list */ 62 delcond(); /* delete a condition from the list */ 63 BOOLEAN trcond(); /* determine if any trace condition is true */ 64 BOOLEAN stopcond(); /* determine if any stop condition is true */ 65 66 addbp(); /* add a breakpoint */ 67 delbp(); /* delete a breakpoint, return FALSE if unsuccessful */ 68 bpfree(); /* free all breakpoint information */ 69 setallbps(); /* set traps for all breakpoints */ 70 unsetallbps(); /* remove traps at all breakpoints */ 71 BOOLEAN bpact(); /* handle a breakpoint */ 72 fixbps(); /* destroy temporary breakpoints left after a fault */ 73 status(); /* list items being traced */ 74