date and time created 82/01/18 19:02:32 by linton
authorMark Linton <linton@ucbvax.Berkeley.EDU>
Tue, 19 Jan 1982 11:02:32 +0000 (03:02 -0800)
committerMark Linton <linton@ucbvax.Berkeley.EDU>
Tue, 19 Jan 1982 11:02:32 +0000 (03:02 -0800)
SCCS-vsn: usr.bin/pascal/pdx/breakpoint.h 1.1

usr/src/usr.bin/pascal/pdx/breakpoint.h [new file with mode: 0644]

diff --git a/usr/src/usr.bin/pascal/pdx/breakpoint.h b/usr/src/usr.bin/pascal/pdx/breakpoint.h
new file mode 100644 (file)
index 0000000..207e726
--- /dev/null
@@ -0,0 +1,73 @@
+/* Copyright (c) 1982 Regents of the University of California */
+
+static char sccsid[] = "@(#)breakpoint.h 1.1 %G%";
+
+/*
+ * Breakpoint module definitions.
+ *
+ * This module contains routines that manage breakpoints at a high level.
+ * This includes adding and deleting breakpoints, handling the various
+ * types of breakpoints when they happen, management of conditions for
+ * breakpoints, and display information after single stepping.
+ */
+
+unsigned short tracing;
+unsigned short var_tracing;
+unsigned short inst_tracing;
+
+BOOLEAN isstopped;
+
+#define ss_lines               (tracing != 0)
+#define ss_variables           (var_tracing != 0)
+#define ss_instructions                (inst_tracing != 0)
+#define single_stepping                (ss_lines || ss_variables || ss_instructions)
+
+/*
+ * types of breakpoints
+ */
+
+typedef enum {
+       ALL_ON,                 /* turn TRACE on */
+       ALL_OFF,                /* turn TRACE off */
+       INST,                   /* trace instruction (source line) */
+       CALL, RETURN,           /* trace procedure/function */
+       BLOCK_ON,               /* set CALL breakpoint */
+       BLOCK_OFF,              /* clear CALL breakpoint */
+       TERM_ON,                /* turn TRACEVAR on */
+       TERM_OFF,               /* turn TRACEVAR off */
+       AT_BP,                  /* print expression at a line */
+       STOP_BP,                /* stop execution */
+       CALLPROC,               /* return from a "call"-ed procedure */
+       END_BP,                 /* return from program */
+       STOP_ON,                /* start looking for stop condition */
+       STOP_OFF,               /* stop looking for stop condition */
+} BPTYPE;
+
+/*
+ * Things that are on the tracing or condition list are either
+ * associated with the trace (implying printing) or stop commands.
+ */
+
+typedef enum { TRPRINT, TRSTOP } TRTYPE;
+
+/*
+ * routines available from this module
+ */
+
+addvar();              /* add a variable to the trace list */
+delvar();              /* delete a variable from the trace list */
+printvarnews();                /* print out variables that have changed */
+trfree();              /* free the entire trace list */
+addcond();             /* add a condition to the list */
+delcond();             /* delete a condition from the list */
+BOOLEAN trcond();      /* determine if any trace condition is true */
+BOOLEAN stopcond();    /* determine if any stop condition is true */
+
+addbp();               /* add a breakpoint */
+delbp();               /* delete a breakpoint, return FALSE if unsuccessful */
+bpfree();              /* free all breakpoint information */
+setallbps();           /* set traps for all breakpoints */
+unsetallbps();         /* remove traps at all breakpoints */
+BOOLEAN bpact();       /* handle a breakpoint */
+fixbps();              /* destroy temporary breakpoints left after a fault */
+status();              /* list items being traced */