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