Bell 32V release
[unix-history] / usr / src / cmd / sdb / main.c
CommitLineData
b4d2bc41
TL
1#
2/*
3 *
4 * UNIX debugger
5 *
6 */
7
8#include "head.h"
9
10INT mkfault;
11INT executing;
12CHAR *lp;
13L_INT maxoff;
14L_INT maxpos;
15ADDR sigint;
16ADDR sigqit;
17INT wtflag;
18L_INT maxfile;
19L_INT maxstor;
20L_INT txtsiz;
21L_INT datsiz;
22L_INT datbas;
23L_INT stksiz;
24STRING errflg;
25INT magic;
26L_INT entrypt;
27
28CHAR lastc;
29
30STRING symfil;
31STRING corfil;
32INT argcount;
33
34
35
36main(argc, argv)
37REG STRING *argv;
38REG INT argc;
39{
40 register char *p;
41 maxfile=1L<<24; maxstor=1L<<31;
42
43 setbuf(stdout, NULL);
44 setbuf(stderr, NULL);
45
46 WHILE argc>1
47 DO IF eqstr("-w",argv[1])
48 THEN wtflag=2; argc--; argv++;
49 ELSE break;
50 FI
51 OD
52
53 IF argc>1 THEN symfil = argv[1]; FI
54 IF argc>2 THEN corfil = argv[2]; FI
55 fp = filework;
56 if (argc > 3) {
57 for (p = argv[3]; *p; *fp++ = *p++) ;
58 *fp++ = '/';
59 }
60
61 argcount=argc;
62 setsym(); setcor();
63 initfp();
64
65 /* set up variables for user */
66 maxoff=MAXOFF; maxpos=MAXPOS;
67
68 IF (sigint=signal(SIGINT,01))!=01
69 THEN sigint= (ADDR) fault; signal(SIGINT,fault);
70 FI
71 sigqit=signal(SIGQUIT,1);
72 setexit();
73 if (debug) printf("Sdb restarted\n");
74 IF executing THEN delbp(); FI
75 executing=FALSE;
76
77 for (;;) {
78 mkfault = 0;
79 printf("*");
80 if (decode() == 1) {
81 printf("Error; try again\n");
82 continue;
83 }
84
85 if (debug) {
86 printf("cmd %c:\n", cmd);
87 printf("%s:%s\n", proc, var);
88 printf("args-%s;re-%s;integ-%d\n", args, re, integ);
89 printf("scallf-%d;reflg-%d\n\n", scallf, reflag);
90 }
91
92 docommand();
93 }
94}
95
96
97fault(a)
98{
99 signal(a,fault);
100 mkfault++;
101 printf("\n");
102 reset();
103}