1: /*
   2:  * Copyright (c) 1983 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: 
   7: #ifndef lint
   8: static char sccsid[] = "@(#)debug.c	5.1 (Berkeley) 5/31/85";
   9: #endif not lint
  10: 
  11: static char rcsid[] = "$Header: debug.c,v 1.5 84/12/26 10:39:01 linton Exp $";
  12: 
  13: /*
  14:  *  Debug routines
  15:  */
  16: 
  17: #include "defs.h"
  18: #include "tree.h"
  19: #include "operators.h"
  20: #include "eval.h"
  21: #include "events.h"
  22: #include "symbols.h"
  23: #include "scanner.h"
  24: #include "source.h"
  25: #include "object.h"
  26: #include "main.h"
  27: #include "mappings.h"
  28: #include "process.h"
  29: #include "machine.h"
  30: #include "debug.h"
  31: #include <signal.h>
  32: 
  33: public boolean tracetree;   /* trace building of parse trees */
  34: public boolean traceeval;   /* trace tree evaluation */
  35: 
  36: /*
  37:  * Dynamically turn on/off a debug flag, or display some information.
  38:  */
  39: 
  40: public debug (p)
  41: Node p;
  42: {
  43:     int code;
  44: 
  45:     code = p->value.lcon;
  46:     switch (code) {
  47:     case 0:
  48:         puts("debugging flags:");
  49:         puts("    1        trace scanner return values");
  50:         puts("    2        trace breakpoints");
  51:         puts("    3        trace execution");
  52:         puts("    4        trace tree building");
  53:         puts("    5        trace tree evaluation");
  54:         puts("   -[12345]  turns off corresponding flag");
  55:         puts("    6        dump function table");
  56:         break;
  57: 
  58:     case 1:
  59:     case -1:
  60: #           ifdef LEXDEBUG
  61:         lexdebug = (boolean) (code > 0);
  62: #           else
  63:         error("can't debug scanner (not compiled with LEXDEBUG)");
  64: #           endif
  65:         break;
  66: 
  67:     case 2:
  68:     case -2:
  69:         tracebpts = (boolean) (code > 0);
  70:         break;
  71: 
  72:     case 3:
  73:     case -3:
  74:         traceexec = (boolean) (code > 0);
  75:         break;
  76: 
  77:     case 4:
  78:     case -4:
  79:         tracetree = (boolean) (code > 0);
  80:         break;
  81: 
  82:     case 5:
  83:     case -5:
  84:         traceeval = (boolean) (code > 0);
  85:         break;
  86: 
  87:     case 6:
  88:         dumpfunctab();
  89:         break;
  90: 
  91:     default:
  92:         error("unknown debug flag");
  93:         break;
  94:     }
  95: }
  96: 
  97: private String leafname[] = {
  98:     "nop", "name", "sym", "lcon", "fcon", "scon", "rval", "index"
  99: };
 100: 
 101: public String opname (op)
 102: Operator op;
 103: {
 104:     String s;
 105:     static char buf[100];
 106: 
 107:     switch (op) {
 108:     case O_ITOF:
 109:         s = "itof";
 110:         break;
 111: 
 112:     case O_ENDX:
 113:         s = "endx";
 114:         break;
 115: 
 116:     case O_QLINE:
 117:         s = "qline";
 118:         break;
 119: 
 120:     default:
 121:         if (ord(op) <= ord(O_INDEX)) {
 122:         s = leafname[ord(op)];
 123:         } else {
 124:         s = opinfo[ord(op)].opstring;
 125:         if (s == nil) {
 126:             sprintf(buf, "[op %d]", op);
 127:             s = buf;
 128:         }
 129:         }
 130:         break;
 131:     }
 132:     return s;
 133: }

Defined functions

debug defined in line 40; used 1 times
opname defined in line 101; used 3 times

Defined variables

leafname defined in line 97; used 1 times
rcsid defined in line 11; never used
sccsid defined in line 8; never used
Last modified: 1985-05-31
Generated: 2016-12-26
Generated by src2html V0.67
page hit count: 951
Valid CSS Valid XHTML 1.0 Strict