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