UBC Theses and Dissertations

UBC Theses Logo

UBC Theses and Dissertations

The design and implementation of a run-time analysis and interactive debugging environment Johnson, Mark Scott 1978

Your browser doesn't seem to have a PDF viewer, please download the PDF to view this item.

Item Metadata

Download

Media
831-UBC_1978_A1 J63.pdf [ 11.44MB ]
Metadata
JSON: 831-1.0051800.json
JSON-LD: 831-1.0051800-ld.json
RDF/XML (Pretty): 831-1.0051800-rdf.xml
RDF/JSON: 831-1.0051800-rdf.json
Turtle: 831-1.0051800-turtle.txt
N-Triples: 831-1.0051800-rdf-ntriples.txt
Original Record: 831-1.0051800-source.json
Full Text
831-1.0051800-fulltext.txt
Citation
831-1.0051800.ris

Full Text

THE  D E S I G N AND I M P L E M E N T A T I O N OF A R U N - T I M E A N A L Y S I S AND I N T E R A C T I V E DEBUGGING ENVIRONMENT by HARK B.A., M.S.,  A  University University  THESIS THE  SCOTT  JOHNSON  o f California, of California,  Santa Santa  SUBMITTED I N PARTIAL R E Q U I R E M E N T S FOR T H E DOCTOR  OF  Barbara, Barbara,  FULFILLMENT DEGREE OF  PHILOSOPHY in  THE  F A C U L T Y OF  (Department  He  GRADUATE  STUDIES  o f Computer  Science)  accept t h i s t h e s i s as conforming to the required s t a n d a r d . .,  THE  UNIVERSITY  OF  August,  (c)  Mark  Scott  BRITISH  COLOMBIA  1978  Johnson,  1978  1973 1974  OF  In  presenting  this  an a d v a n c e d  degree  the  shall  I  Library  f u r t h e r agree  for  scholarly  by h i s of  thesis at  the U n i v e r s i t y  make  that  it  purposes  written  thesis  for  freely  permission may  representatives.  this  in p a r t i a l  is  financial  of  British  available  for  for extensive  be g r a n t e d  It  fulfilment o f the requirements  by  shall  not  Date  Science  r  University Wesbrook  Vancouver, V6T  Computer  „r or  of  British  Place  Canada  1W5  1978 August  14  Columbia  agree  thesis  Department o r or publication  be a l l o w e d w i t h o u t  Scott  that  and study.  o f this  o f my  copying  I  permission.  r, .,.,.„,„„* Department  2075  copying  that  Mark  The  reference  the H e a d  understood  gain  Columbia,  foi  Johnson  my  ii Abstract  The  d e s i g n and i m p l e m e n t a t i o n  interactive debugging is  system  to  of computer  presented.  The  of  facilitate  programs  language-independent,  the  written  principal  a  analysis  in  features  and symbolic  high-level  languages  o f t h e system,  called  i s  by t h e  RAIDE, a r e : (1)  Host  source  abstraction variables, language (2)  language  of language constants,  interfacer  Translators  independence  entities  and  supported  constructs  (for  example,  procedures, statements, and events) with a  providing  can  language-dependent  details;  c o o p e r a t e w i t h RAIDE a t v a r y i n g  l e v e l s of  detail; (3)  The  program (1)  user using  postmortem procedures The  debugging  debugging actions  dumping) written  cation  RAIDE  actions  are  machine,  SPAM.  called  RAIDE's  aided  to  tracing,  Dispel;  a minimum and  snapshots,  by u s e r - s u p p l i e d  RAIDE.  by  feasibility,  simulation  and  and l i b r a r y "  Besides  d e s i g n s o f t h e debugging  of a v i r t u a l  a prototype  a SPAM s i m u l a t o r  o f two l a n g u a g e t r a n s l a t o r s  internal  kept  called  object  i n D i s p e l ; and i s  with  an e x e c u t i n g  language,  are  provided  was u n d e r t a k e n , i n c l u d i n g  interface  and  ( f o r example,  implementation  To d e m o n s t r a t e tion  with  an e x t e n d a b l e d e b u g g i n g  Primitive  nonprimitive  (5)  interacts  implementa-  and t h e m o d i f i -  (namely, A s p l e and describing system,  the  BCPL)  to  e x t e r n a l and  the a b s t r a c t  machine.  iii and  the  debugging  advantages Numerous  and  Two  reported;  facilitate The  of  reflections and  run-time thesis  the of  thesis  each  also  of  discusses the  these  components.  d e b u g g i n g commands w r i t t e n  i n Dispel are  significant  implementation,  and  shortcomings  examples  given.  language,  side-effects  on  the  of  software  suggestions  for  the  tools  research  are  supporting the  translator  design  to  debugging.  contains  a substantial  annotated bibliography  an e x t e n s i v e i n d e x .  Key Primary  Words and P h r a s e s  terms:  debuggers, debugging, debugging languages, debugging systems, D i s p e l , e r r o r d e t e c t i o n , i n t e r p r e t e r s , program testing, RAIDE, SPAM, v i r t u a l m a c h i n e s Additional  terms;  abstract machines, automated programming aids, command languages, d e b u g g i n g - o r i e n t e d machines, diagnostic systems, dynamic d e b u g g i n g , e r r o r analysis, error checking, execution profiles, interactive debugging, i n t e r a c t i v e s y s t e m s , program analysis, programming systems, programming tools, pseudomachines, simulators, s o f t w a r e debugging, software tools, s p e c i a l - p u r p o s e languages, symbolic debugging, t r a c i n g  Commuting, S§2i§2.s c a t e g o r i e s :  4. 13, 4.29, 4.42, 4.6  iv Table of Contents  Chapter A. fi. C.  I. I n t r o d u c t i o n 1 The P r o b l e m 1 P r e v i o u s Work 3 C o n c u r r e n t Work . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7  Chapter I I . The D e b u g g i n g System 9 A. Design C r i t e r i a .....9 B. B a s i c RAIDE C o n c e p t s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 C. Overview o f t h e Implementation 19 C h a p t e r I I I . T h e D e b u g g i n g S y s t e m L a n g u a g e ...., A. Design C r i t e r i a ......................,............ B. S y n t a x and S e m a n t i c s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C. Examples D. D i s c u s s i o n ............ ............................  27 27 30 42 52  Chapter IV. The V i r t u a l Debugging Machine ....59 A. D e s i g n C r i t e r i a . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . 59 B. M a c h i n e A r c h i t e c t u r e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 C. D i s c u s s i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 Chapter A. B. C. D. E.  V. The I m p l e m e n t a t i o n 73 S c o p e o f t h e I m p l e m e n t a t i o n . . . . . . . . . . . . . . . . . . . . . . . 73 I n t e r n a l D e s i g n o f RAIDE ......... , . . , , . . . . . . . . . . . . 76 I n t e r f a c i n g a Language ........... . . . . . . . . . . . . . . . . . 80 I n t e r f a c i n g a T r a n s l a t o r . . . . . . . . . . . . . . . . . . . . . . . . . . 82 R e f l e c t i o n s on t h e I m p l e m e n t a t i o n T o o l s . . . . . . . . . . . 84  Chapter V I . Summary and C o n c l u s i o n s . . . . . . . . . . . . . . . . . . . . . . . 94 A. I m p o r t a n c e ....... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 B. S h o r t c o m i n g s ......... .......... . . . . . . . . . . . . . . . . . . . 97 C. F u t u r e D i r e c t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 D. S u g g e s t i o n s f o r T r a n s l a t o r D e s i g n . . . . . . . . . . . . . . . . 103 Glossary  112  R e f e r e n c e s and A n n o t a t e d B i b l i o g r a p h y  ......................114  A p p e n d i x A. RAIDE System F u n c t i o n s ........................137 1. S t a t u s F u n c t i o n s . . . . . . . . . . . . . . . . . . . . . ....... ..... 137 2. D i s p l a y Format F u n c t i o n s 138 3. A n a l y s i s F u n c t i o n s ...............................138 4. L a n g u a g e - D e p e n d e n t System F u n c t i o n s . . . . . . . . . . . . . . 1 3 9 Appendix  B.  Dispel  Syntax Chart  A p p e n d i x C.  SPAM  Descriptor  A p p e n d i x D.  SPAM T a b l e  . . . . . . . . . . . . . . . . . . . . . . . . . . . ,140  Formats  .......................144  E n t r y F o r m a t s ......................149  V  Appendix E. SPAM I n s t r u c t i o n R e p e r t o i r e ...................152 1. Segment C o n t r o l I n s t r u c t i o n s . . . . . . . . . . . . . . . . . . . . . 152 2. D a t a A c c e s s I n s t r u c t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . 154 3. A r i t h m e t i c and S t r i n g I n s t r u c t i o n s . , . . , . . , , . . . . , . 1 5 6 4. T r a n s p u t I n s t r u c t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 5. S t o r a g e Management I n s t r u c t i o n s 157 6. Status Instructions 157 7. Appendix  Miscellaneous Instructions F.  An Example  SPAM O b j e c t  A p p e n d i x G.  RAIDE Symbol  Appendix  H.  Example  Appendix  I . . An Example  Table  . . . . . . . . . . . . . . . . . . . . . . . 158 Program  Entry  RAIDE Symbol  Table Entries  RAIDE Program  B i b l i o g r a p h i c R e f e r e n c e Index  Formats  159 164 .,,...,.,,,,170  S p e c i f i c a t i o n . . . . . . . . 177 179  G e n e r a l I n d e x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , , 181  vi  List I. II. III.  of  D e b u g g i n g System D e s i g n  Tables Criteria  13  Examples o f P o s s i b l e G e n e r i c s f o r V a r i o u s L a n g u a g e s . . . . . . . . . . . . . , . . . . . . ...... ..... *....... •... Information Interfacers  S u p p l i e d t o EAIDE by t h e  15  Language  ...,.................... 21  IV,  Information  S u p p l i e d t o SPAM by t h e T r a n s l a t o r s .....  V.  Information  S u p p l i e d t o RAIDE by t h e T r a n s l a t o r s .,..,23  VI. VII.  L e v e l s o f Debugging Support ......................... D e b u g g i n g Language D e s i g n C r i t e r i a  22  25 29  vii List  of  Figures  II-1.,  Overview of the Implementation ......................  20  IV-1.  B a s i c A r c h i t e c t u r e o f SPAM . . . . . . . . . . . . . . . . . . . . . . . . . .  62  V-1.  Basic Information  77  C-1. C-2. C-3. C-4. C-5.  Segment D e s c r i p t o r Format . . . . . . . . . . . . . . . . . . . . . . . . . . Data D e s c r i p t o r Format A r r a y D e s c r i p t o r Format Segment C o n t r o l S t a c k E n t r y D e s c r i p t o r Format ...... Scope S t a c k E n t r y D e s c r i p t o r Format . . . . . . . . . , . . . . . .  144 145 147 148 148  D-1. D-2.  Bounds T a b l e E n t r y Format Type T a b l e E n t r y Format  149 150  F-1. F-2. F-3.  Towers Towers Towers  G-1. G-2. G-3. G-4. G-5. G-6. G-7.  D a t a - S p e c i f i c Symbol T a b l e E n t r y Format ............ 164 Segment-Specific Symbol T a b l e E n t r y Format . . . . . . . . . 165 G e n e r i c Symbol T a b l e E n t r y Format . . . . . . . . . . . . . . . . . . 166 E v e n t Symbol T a b l e E n t r y Format 167 System F u n c t i o n Symbol T a b l e E n t r y F o r m a t 168 Debugging D a t a - S p e c i f i c Symbol T a b l e E n t r y Format ., 168 D e b u g g i n g S e g m e n t - S p e c i f i c Symbol T a b l e E n t r y F o r m a t . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . ,169  H-1. H-2. H-3. H-4.  Program f o r D e m o n s t r a t i n g t h e RAIDE Symbol T a b l e ... A c c e s s i n g a Symbol T a b l e E n t r y by I d e n t i f i e r A c c e s s i n g a Symbol T a b l e E n t r y by ( l e v e l , o r d e r ) .... Example S e g m e n t - S p e c i f i c Symbol T a b l e E n t r i e s  172 173 174 176  1-1. I-2.  Towers o f H a n o i Data S p e c i f i c a t i o n s Towers o f H a n o i Segment S p e c i f i c a t i o n s  177 178  S t r u c t u r e o f HAIDE  ..  o f H a n o i S o u r c e Program o f H a n o i SPAM Code o f H a n o i I n i t i a l SPAM Machine S t a t e  160 161 163  ..  viii  Preface / * The l a n g u a g e i s p e r p e t u a l l y i n f l u x : i t i s a l i v i n g s t r e a m , s h i f t i n g , c h a n g i n g , r e c e i v i n g new s t r e n g t h from a t h o u s a n d t r i b u t a r i e s , l o s i n g o l d forms i n t h e b a c k w a t e r s of time. To s u g g e s t t h a t a young w r i t e r n o t swim i n t h e main s t r e a m o f t h i s t u r b u l e n c e would be f o o l i s h i n d e e d . — W i l l i a m S t r u n k , J r . , [ S t r u 5 9 : 6 9 ] */ Altho encounter  readers o f t h i s t h e s i s certain  reading thru even  tho  unusual  i t that any  their  acceptance of such  academic usage.  may  at f i r s t  spellings,  initial  they  be  should find  difficulties  training  may  surprised  still  will  to after  disappear  inhibit  their  ix Acknowledgements /*  Aliguid  p e r Omnes. —  Work on t h i s support Centre was  t h e s i s was made p o s s i b l e  thru  o f the u n i v e r s i t y  This  of B r i t i s h  financial  Bosch [ V a n d  Columbia.,  was p r e p a r e d  assist  of  Texture.  7 8 ] , which i s based  74].  year  help  science training  in  the  Support  formative  Group,  gave  the occasionally  years  encouragement  Presser,  significantly  particu-  their  time  workings  of  computer  and  affected  van den  gordian  at the University of C a l i f o r n i a ,  I am t h a n k f u l t o Chuck Dana, L e o n  document  on t h e work o f P e t e r  Members o f t h e T e x t u r e  me i n u n d e r s t a n d i n g  For t h e i r  final  u s i n g the Texture  Tom B u s h w o r t h and Ted Venema, g e n e r o u s l y  to  The  by a UBC G r a d u a t e F e l l o w s h i p .  dissertation  processor [Text  Their  the  */  o f t h e D e p a r t m e n t o f Computer S c i e n c e and t h e Computing  supplemented  larly  motto o f C a l i s t r a l i a  my  Santa  Barbara,  J o h n S. B h i t e .  the  course  o f my  academic p e r e g r i n a t i o n . Several to  my  rock  f e l l o w graduate  work: G r e g W i l b u r  throwers.  early  was one o f my e a r l i e s t  but  he  also  particularly  of  and most  shortcomings  suggested  T e d Venema was l i k e w i s e l a v i s h  criticisms, Appelbe  made s p e c i a l c o n t r i b u t i o n s  Not o n l y d i d he p o i n t o u t  proposals,  changes.  students  with  many  ardent i n the  a d d i t i o n s and  h i s constructive  t h e a b s t r a c t machine, SPAM.  was i n s t r u m e n t a l i n s h a p i n g  the direction  of  the  Bill early  X drafts  of  this  thesis.  acronyms a r e l a r g e l y graciously ing.  c r e d i t e d to  accepted  A l t h o I was  at f i r s t  ("enraged  describes  initial  his  editing  has  ubiquitous  (blamed on?) h i m . , Graeme  t h e onerous task  suggestions my  I t s e t h e r e a l w i t t i c i s m s and  of editing  and  proofread-  o v e r p o w e r e d by t h e m a g n i t u d e  at  Hirst  of  his  h i s v i c i o u s a t t a c k s " more a c c u r a t e l y  r e a c t i o n ) , I am significantly  nevertheless  improved  the  confident  that  guality of  this  dissertation. The e x t r a d e p a r t m e n t a l deserve must  commendation  for  have b e e n t o them  Fournier, Kulsrud,  members their  of  my  perserverance  a somewhat t r a n s l u c e n t  the chairperson  special  The  members  mention  Chanson,  for  especially  acknowledge  of  my  their  Hugh Dempster,  committee  i n studying document:  what  J.J.F.  o f t h e e x a m i n i n g c o m m i t t e e ; H e l e n e E.  t h e e x t e r n a l e x a m i n e r ; and P e t e r  examiner.  examining  Lawrence,  the  public  guidance committee a l s o  deserve  supervision:  Alan  Ballard,  Sam  Bob F r a l e y , Mabo I t o , and J o h n Peck.  the c o u n s e l  o f my f a c u l t y  advisor,  I  Harvey  Abramson. Finally, the  constant  fellow  this  t h e s i s would n o t have been c o m p l e t e d  encouragement  Calistralian.  and m o r a l s u p p o r t  When I r e a c h e d  pit,  h i s o b s t i n a t e c o n s o l a t i o n gave me  and  continue  numerous t o  on. name,  Bill, have  memorable and b l e s s e d  together made  event.  my  of  Bill  without Appelbe,  the d e p t h s o f t h e academic the s t i m u l u s t o c l i m b out with  sojourn  a host in  of f r i e n d s too Canada  a  most  1 Chapter /*  A.  The  c o m p u t e r program d e v e l o p m e n t c y c l e  s i x phases: s p e c i f i c a t i o n , d e b u g g i n g , and  engineers phases.  have  and  concentrated  the  on  their  phases.  Emphasizing logic  emphasis  It i s clear  the  errors  testing  design  recent  coding,  years third  attention paid  software of  to  these  language  has  i n the  production  detracted  that the best  from  of  these  quality  progress  i n the  manner of d e a l i n g  i t s presence  i n the f i r s t  with place.  o f l a n g u a g e s w h i c h make t h e i n c l u s i o n  difficult  necessary  and  basically  decomposition,  t h e s e c o n d and  the  i s to prevent  encourage e r r o r - f r e e still  In  consists  a d v o c a c y o f s t r u c t u r e d programming., A l t h o  a programming bug  /*  evaluation.  points are c e r t a i n l y important  software,  is  functional  T h i s i s e x e m p l i f i e d by  design  other  */  Problem  testing,  two  Introduction  The b e s t may s l i p , and t h e most c a u t i o u s f a l l ; He's more t h a n m o r t a l t h a t n e » e r e r r e d a t a l l . — Rev. J o h n P o m f r e t , Love Triumphant^ gv§r Reason  The of  I.  and  programming  programming for  all  methodologies  i s important. production  debugging phases [ Halp  of  which  Nevertheless, i t  programs t o e n t e r  the  65].  D e b u g g i n g p o o r l y d e s i g n e d and c o d e d s o f t w a r e s y s t e m s i s v e t e r i n a r y medicine f o r dinosaurs. — H a r l a n D. M i l l s , [ M i l l 76b:271 ] */  This thesis  presents the  language-independent, analysis  and  symbolic  design  interactive debugging  and system  o f computer  implementation to  of  facilitate  programs w r i t t e n  a the in  Chapter I.  Introduction  high-level  languages.  system i s t o programmer  The  provide can  2  an  detect  primary  purpose  environment the  in  of t h e  which  the  p r e s e n c e o f e r r o r s and  thereby, reduce the t o t a l  t i m e s p e n t on t h e  phase  the  cycle.  program  development  t h e s i s i s the i s o l a t i o n execution. The  Detecting debugging  recognition, program program not  process  requires  b e h a v i o r , and  and  based  largely  knowledge  realization  a s "What p r e c i s e l y  be  and "How  useful,  a  guestions. is  program here.  components:  S§eo.gnition  of  a  results  and  o f when t h e s e e x p e c t a t i o n s a r e  Altho the  o f t h e cause of  diagnostic  process  by a n s w e r i n g s u c h  i s wrong w i t h t h e program?",  questions  "Where  was  the  what c o n d i t i o n s d o e s t h e e r r o r m a n i f e s t  e x t e n s i v e i s t h e e r r o r ? " [Brow  debugging  Debugging  this  system  i s akin  must  help  to  73:ch.  9].  To  answer  these  to d e t e c t i v e r y ; a debugging  system  akin to a magnifying glass. , A  debugging  collection  system  quality  Clap  74,  and  quantity  D a v i 75, L e d g  debugging  information  should  of software aids  the  A  major  of the anticipated  i t i s directed  e r r o r d e t e c t e d ? " , "Under itself?",  three  the i d e n t i f i c a t i o n  on i t s symptoms.  intuitive,  The c o n c e r n o f  e r r o r s i s not o f i n t e r e s t  correction.  their  debugging  of errors during  contains  Diagnosis involves  an e r r o r , is  syntactic  diagnosis,  error  met.  and c o r r e c t i o n  computer  trace  c a u s e and, of  debugging  system  available  be  available of t h e i r  just  component o f a  t o programmers t o  improve  s o f t w a r e [ B a l z 74, Chea  76, S t o c 67, T e i t must  one  maximize  69,  W i l e 76,  the  amount  t o t h e p r o g r a m m e r . T h e need  72,  Wino 7 5 ] . of  for  usable such  a  Chapter system  I.  Introduction  i s apparent  s y s t e m s which user  of  /*  Previous No  or  extensive  monitoring  The  debugging  technigues  following  general  Gain  69,  Gell  Satt  75,  Schw 71,  The  concept  75,  out  reader  and  Scow 72,  directly  After  L e d g 75,  S e i d 68,  automated  [Kirs  program t r a c e s . value  applied  to  computing environment Cris  65,  the  of the  Hann 73,  Fong  P o o l 73,  detection  Evan 66,  Bain  73,  debugging system i s  p r o c e s s i n g , debugging console  using a  processing,  errors  Virtually  Gain  69,  in  every  aid [Ball Gall  dumps  interactive  debugging systems, of  the  program  register  the e a r l y days o f  interactive  73b,  74].  t o p r o d u c e memory and  p r o v i d e s some s u c h  Evan 65,  Evan 66,  run-time  l a n g u a g e p r o g r a m s , became a p p a r e n t .  71,  c o n s u l t v a r i o u s of  operator's  In  of of  73,  VanT  •/  i n a survey  t h e d e v e l o p m e n t of b a t c h  was  Blai  machinelanguage  t o p r o v i d e c l u e s as t o why  this activity  the  should  [Brow  a t the  incorrectly.  were f i r s t  The  p r e v i o u s work i n t h e a r e a  the i n v e n t i o n of batch  lights  computing,  to  source  i s interested  interactive,  and  74] and  who  concepts  Koch 69,  o f an  console switches behaved  aids.  e x i s t i n t h i s world w i t h i m p u n i t y . — James A n t h o n y F r o u d e , S p i n o z a  references:  Before  carried  debugging  user-supplied  describes briefly  debugging systems.  was  run-time  processing  routines. ,  vehement e r r o r c a n  new.  of language  Hork  This section  not  proliferation  l a n g u a g e p r o c e s s o r s must o f t e n r e s o r t  dumps  d e b u g g i n g and B.  the  provide inadeguate  such  language  from  3  which  machine-  interactive  77, 74,  Bern  68,  Jdns  68,  Chapter I. Jose  69,  Introduction  Kuls  facilities inspect  69,  points,  S t o c 65,  provided  the s t a t e to  by  of  set  4 UWM  such  the  73,  Zimm 6 7 ] .  systems  include  run-time  breakpoints  in  execution  o f p r o c e d u r e s and  the  systems  often  to  execution  and t o change  allow  one  patch  person  who  variables.,  object  develop  programs  ability of  debugging  programming  tools  which  programs  regard  during  limited  language.  provide  use  the  the user within  to  The t r e n d  has emphasized  o f a program  source language.  r u n - t i m e t o t h e program without  i n a high-level  t o monitor t h e e x e c u t i o n  some h i g h - l e v e l  These  the values of variables.  away from m a c h i n e - l a n g u a g e to  particular  and t o t r a c e t h e  Machine-language debugging systems a r e of the  at  t h e program, of  basic  the a b i l i t y to  environment  values  The  need  with the  the  terms  The u s e r wants t o r e f e r a t  using  s o u r c e - l e v e l names  to the results  of the t r a n s l a t i o n  and  notations  process.  /*• How t r u l y s a d i t i s t h a t j u s t a t t h e v e r y moment when t h e computer has s o m e t h i n g i m p o r t a n t t o t e l l us, i t s t a r t s speaking gibberish. — G e r a l d M. W e i n b e r g , [ W e i n 7 1 : 2 0 8 ] * / One common way i n which some high-level  languages  processor-supplied A l g c l 60 fGris  the  postmortem execution  termination  been  symbolic  by p r i n t i n g  a  provided  is  thru  dumps  aid for language-  (e.g.,  ALCOR  PL/C (Conw 73, Morg 7 1 ] , S n o b o l 4  72, S i t e 7 1 ] , and IMP  dump g i v e s of  debugging  postmortem  F e r l 71],  71b], Algol-W [ S a t t  symbolic of  [ B a y e 67,  has  run-time  [Step 74]).  A  the user a p i c t u r e of the state  program  at  the  the source-level  point  of  abnormal  names o f v a r i a b l e s and  Chapter their  I.  Introduction  v a l u e s i n a form  language.  A  invocation  resembling  symbolic  history  the terminology  traceback  i s usually  information, i t should the  5  of  supplied  dynamic  as  well.  source  procedure Using  be p o s s i b l e f o r t h e programmer  this  to discern  cause of abnormal t e r m i n a t i o n a f t e r t h e f a c t .  A significant  advance  i n high-level  been a f f o r d e d by t h e i m p l e m e n t a t i o n lators.  These  because  of  translators,  their  the  d e t e c t i o n of program l o g i c  Morg 7 1 ] ,  toward  students  and  SPLINTER  [ Moul 6 7 ] a n d B a t f i v Cobol for  errors.  mismatched  accessing u n i n i t i a l i z e d  oriented  formal  the  compilers  programmers, checks  to  sacriaid in  Such e r r o r s i n c l u d e o u t and  variables.  actual  parameters,  Examples  of t r a n s l a t o r s  i n c l u d e PLUTO [ B o u l 7 2 ] ,  PL/C fConw 73,  [ Glas  68]  f o r PL/I  p r o g r a m s ; DITRAN  [ C r e s 7 0 ] f o r F o r t r a n programs; H a t b o l  programs; Algol-W [ S a t t 72, S i t e 71];  for  a n d FLASC [Thorn 7 6 ]  A l g o l 68 programs. A n o t h e r common way i n which t h e  has  novice  has  diagnostic transstudent  t o provide extensive run-time  range s u b s c r i p t s ,  and  called  o r i e n t a t i o n toward  efficiency  language debugging  of s p e c i a l  often  fice  of  the  of the  been  given  host source  access  68,  Pull  69, Holm 7 2 ] ,  debugging source  G r i s 71b,  user  itself  [Bair  75,  Bull  72,  Conw 7 3 ,  G r i s 7 5 , Hans 75, IBM 72, Kemm 7 6 , L e e d 66, These e x t e n s i o n s  subroutines  language  language  to debugging t o o l s i s t h r u e x t e n s i o n s t o  language  Glas  high-level  which  program,  the  and  language which p r o v i d e e x p l i c i t  have user  syntactic  taken  the  form  of  can i n c o r p o r a t e into a extensions  debugging f a c i l i t i e s .  of  the  In either  Chapter I., I n t r o d u c t i o n  6  case, i t i s the user's r e s p o n s i b i l i t y information  to f a c i l i t a t e  from t h e n e e d t o c a r e f u l l y program  development  abnormality modify, desired  in  To overcome aids,  and  machine-language  and  system  around  same  in  often  becomes  [Reis  facilities  integrating environment  one  [Gris  DDS).  to obtain  the  debugging language to  and  p a r t i c u l a r source language  Altho  and C o r a l [Vers  69], the  (e.g.,  some  of  INTEELISP, designed  translated  MANTIS  INTEELISP  F o r t r a n [ F e r g 6 3 ] , AIDS  code  75, W i l e 7 4 ] ,  [Ofiei 76],  SIMDDT  66 [ P i e r 7 4 ] , BAIL and  64],  and  these  debugging c a p a b i l i t i e s  Nevertheless,  (e.g.,  been  P L / I [ Con w 77, Moor 7 5 ] , IBM * s P L / I  7 2 ] , BUGTRAN and  CS-1  the  debugging systems., High-  7 0 ] , t h e LISP/MTS s y s t e m [ H a l l  I F ) , o t h e r s h a v e been manipulating  to  d e b u g g i n g s y s t e m s have a l m o s t i n v a r i a b l y  S i m u l a [ P a l m 7 7 ] , DDS  [Wolm 7 2 ] ) .  the  necessary  available  [ A s h b 7 3 ] , EX DAMS and P L / I [ B a l z  7 5 ] , TALK  of  high-level  HELPER and F o r t r a n [ K u l s 7 1 ] , I F and F o r t r a n and  phase  t h e program  low-level  [ B o b r 7 2 ] , PL/CT and  Fortran  i t  reexecute  the  Checkout C o m p i l e r [ C u f f and  suffers  When t h e programmer d i s c o v e r s some  developed t o provide  user  interactive  Fortran  program  approach  t h e d i s a d v a n t a g e s o f user-programmed  users with e s s e n t i a l l y  developed  the  information.  s y s t e m s h a v e been  level,  This  p r e p l a n the debugging  program,  retranslate, debugging  i t s debugging.  cycle.  the  t o code i n t o  PL/I  systems  directly  under have  i n t o an  Sail  Multics involved  interpretive  t h e P L / I C h e c k o u t C o m p i l e r , and explicitly  as  run-time  systems  ( e . g . , EXDAMS, AIDS, HELPER, and  i n a l l cases a  debugging  environment  has  Chapter I. been  Introduction  established  7  which  is  applicable  to a single  high-level  language. I n view o f t h e c u r r e n t advantages programs A  of  state  a s i n g l e system  of i n t e r a c t i v e  which  debugging,  the  i s capable of dealing  with  w r i t t e n i n v a r i o u s s o u r c e l a n g u a g e s s h o u l d be  language-independent  system  of e f f o r t  the  introduction  also  minimizes the u s e r ' s overhead i n l e a r n i n g for  i n providing  minimizes the  tion  system  needed  debugging  of  each  new  new  source  language  g u a l systems language  should  are not  currently  of  a  result  and  common,  debugging  such  most g e n e r a l l y a  debugging  translator mentors parser  C  writing  as  in  a  with system  debugging  more  problems  environthan  to  involved.  the The  environment  i n the best the  one  Multilin-  part  programming  than i n  serves  available  single  language  project.  Finally,  another  off-the-shelf  resource a v a i l a b l e t o language imple-  i n much t h e same way  general-purpose l e x i c  g e n e r a t i o n systems are c u r r e n t l y  analyzers  and  available.  C o n c u r r e n t Work Concurrent  been  system  new  in  s u i t a b l e to the e n t i r e  system  a  due  software being written  language f o r each subtask, r a t h e r deemed  Such  i n a u n i f o r m manner.  language-independent in  languages.  written  duplica-  environment  A language-independent  o f programs  t o be debugged  interface  creation  programming  language.  ment a l l o w s c o l l e c t i o n s  a debugging  obvious.  the  with t h e r e s e a r c h r e p o r t e d  design  and  development  in  o f t h e DAD  this  thesis  (Do-All  has  Debugger)  Chapter  I.  debugging for  Introduction  system  use  in  environment, may  be  thru  process.  and  76a,  Vict  76b,  Vict  multiprogramming,  in  on d i f f e r e n t  a rigid  systems  a  i n which  written  executing  [Vict  8  It is  multiprocessing  components o f t h e  system  different  languages  machines..  p r o t o c o l which language  77].  source This  and  network debugged may  be  i s accomplished p r i m a r i l y  must be a d h e r e d  translators  being  designed  involved  t o by a l l o p e r a t i n q in  the  debugging  9  Chapter I I .  The  Debugging  System  / * As a famous p h i l o s o p h e r once a l m o s t s a i d , " G i v e ae a s u i t a b l e d e b u g g i n g e n v i r o n m e n t and a t o o l - b u i l d i n g f a c i l i t y p o w e r f u l (and s i m p l e ) enough, and I w i l l debug t h e w o r l d . " — R o b e r t M. B a l z e r , [ B a l z 69:567] * /  The RAIDE  debugging system d e s c r i b e d  (Run-time  named a f t e r  Analysis  in  this  thesis  and I n t e r a c t i v e D e b u g g i n g  another product s u c c e s s f u l l y  employed  is  called  Environment) , to  eliminate  bugs f r o m t h e u s e r ' s e n v i r o n m e n t .  A.  Design  Criteria  /* A good i n t e r a c t i v e ^ d e b u g g i n g s y s t e m must be d i f f i c u l t f o r t h e b e g i n n e r t o m a s t e r f s i c ]. I t s emphasis must be on c o m p l e t e n e s s , c o n v e n i e n c e and c o n c i s e n e s s , not on s i m p l i c i t y . B u t l e r H. Lampson, [Lamp 65:478] * / Many c r i t e r i a RAIDE  [Conw 73,  important  have  criterion  taken i n t o account i n the design  G a i n 69, G r i s  of these  independent  been  over  is  that  71a, Mann 73, P o o l 7 3 ] . the  a large class  virtually  dictates  system  should  that  the  system  code s i n c e  broad c l a s s  of source languages i s c u r r e n t l y  view, t h a t  appear  should  language-dependent  i s , the terminology should  l a n g u a g e a s much a s p o s s i b l e . exceeded  during  program  run  s  This using  t o p r o v i d e a system which can i n t e r p r e t  A l t h o the debugging system should  most  language-  of user source languages.  translated  it  be  The  be  F o r example,  a  infeasible.  language-independent,  from t h e u s e r ' s p o i n t be  of  that  of  the  of  source  i f an a r r a y bound i s  e x e c u t i o n , RAIDE s h o u l d  respond  with  a  Chapter  II.  message Thus,  The  couched for  Algol  SPECIFIED might be  IN  10  D e b u g g i n g System in  the  terminology  68  the  message  THE  DEFINING  of  "INDEX  OCCURRENCE  collections  of  programs.,  Thus,  programs w r i t t e n i n more t h a n Another oriented  toward i n t e r a c t i v e  difference Sack 68],  from  marginal  the  value  exists  a  kernel  system is  source  major  will  VALUE"  user's  viewpoint  the  batch  of  debugging  source  environment  need  to  consequence  s u b s t a n t i a l amount such  multilingual  debug a s e t  of  system s h o u l d  be  language.  environment  always respond  will  user can  p r o c e s s i n g , but  reguirement  machine  no  translators  Data  BOONDS  HULTIPLE  u s a b l e on  i s t h a t the  stream.,  i t ought a l s o without  to  [ G o u l 75,  Gran  66,  will  be  Nevertheless,  facilities  be  substantial  there  which  i s t h a t a l l debugging  are  Knowledge  s h o u l d not  be n e c e s s a r y .  to i n q u i r i e s  need  in  to  preceding supply  table,  the Since  terms,  dumps,  and  i s t h a t language  debugging system  of i n f o r m a t i o n c o n c e r n i n g  as t h e i d e n t i f i e r  be  facilities.  criterion the  of  symbolic  p r o v i d e c o r e dumps, r e g i s t e r  of the  should  language(s).  o t h e r s i m i l a r machine-language debugging One  THE  environments.,  done w i t h i n t e r m s o f t h e  there  THE  language.,  many o f t h e i n t e r a c t i v e f e a t u r e s from  to both  Another  underlying  one  processing  Obviously,  applicable  the  EXCEEDS OF  be  the  major d e s i g n c r i t e r i o n  usable i n a batch  still  source  produced.  A n o t h e r g o a l i s t h a t RAIDE s h o u l d  of  the  the type  with  a  the source  program.  t a b l e , and  even  the  Chapter  II.  source  be  for  provided.  translators  makes a r e q u e s t  because  RAIDE s h o u l d to continue  to  of  of  of  with  other  design  program  any  preceding is  criterion  is  that  run-time a  It  analysis debugging  is  and  is  unable  system.  t h e domain o f p r o g r a m t e s t i n g ,  debugging,  such  information should  allow  being provided  some  I n g a 72,  as opposed in a  dividing  user  be  state  line  of  that as  analysis Knut  to  71])  program  powerful  program  between  program  Nevertheless,  the  n e v e r be o v e r w h e l m i n g . ,  system s h o u l d  the  reason  what i s r e l e v a n t w i t h d e t a i l e d  k e r n e l of t h e  debugging  That  i s , the  information  request.  be  minimal,  yet  sufficient.  must i n c l u d e a s e t o f p r i m i t i v e s s u f f i c i e n t  to c a r r y out  a l l of the  should  contain  not  the  this  70,  needed  upon a more e x p l i c i t  i s , the system  the  exceed those  Altho  [Conr  i s unclear.  supplied should only  are  indeed,  debugging  see  profiles  facilities  debugging environment; and  to  debugging environment,  border  That  cooperating.  system s h o u l d  will  for  (e.g., execution  The  and  the  Such c a p a b i l i t i e s  features  user  system  be  translator-suppliedinformation,  debugging system.  opposed t o s i m p l y  testing  completely  RAIDE t o  requests.  execution.  a  on  enable  supplying extensive information concerning  of  i t  provide information i n  This w i l l  t o which the  lack  Nevertheless,  r e t u r n a message t o t h a t e f f e c t  Another  RAIDE  need t o be  when the t r a n s l a t o r s a r e n o t  the user  capable  11  l a y e r s of completeness.  even  respond  will  possible  increasing  If  D e b u g g i n g System  code i t s e l f  should  used  The  d e s i r e d debugging a c t i o n s ; but  primitives  which  can  easily  be  this  set  simulated  Chapter I I . using  a  the  effort  Debugging  combination  necessary, by  The  further  must a v o i d  It  operating  system  debugging system One  final  reguired  debugging  the  criteria  /*  will  using  t r a n s p o r t the  provided user  by  will  a source  criterion  RAIDE. the  the be  i s that  since  may  from  doing  so  is  a  the  system  operating  familiar built  with  the  into  should  program  to  possible to  need  designing  the  host  the user  be  usable  the  confusion..  source  I t should user  of  be  system.  to  not  s p e c i f y at  not,  some d e b u g g i n g desirable  be  carry  facilitate  of a program., T h i s s h o u l d  programmer  the  however,  aids  into  implementation  75].  summary, and discussed  B a s i c BAIDE  user  f o r ease of  above are  listed  reference,  i n Table  the  design  I.  habituated to sesquipedalian — R i c h a r d L. W e x e l c l a t ,  interfaces  system language.  Before  guage,  it  however,  future  Concepts  Programmers a r e  The  the  may  minimize  implementation e f f o r t ,  m e r e l y be  testing  strategy [Ledg  should  that a l t e r n a t i v e f a c i l i t i e s  design  and  program  In  assumed  everything  debugging preclude  and  overlap  primitives easily  criterion  t o make m o d i f i c a t i o n s t o t h e  run-time  B.  This design  so  Some  produce a s e t o f  m i n i m i z e the  is  12  others.  d u p l i c a t i n q resources  system.  the  the  r e q u i r e d t o implement  To  out  of  however, t o  programmer.  System  is  with  RAIDE s o l e l y  i t i s possible to necessary  utterances. [ S e x e 7 6 : 3 3 3 ] */  thru  the  describe  dabugqinq this  lan-  t o d e f i n e some t e r m s and  to  Chapter  II.  The  1.  The  system  2.  The  user  3.  ;  should  be s o u r c e  interface  The s y s t e m programs.  13  D e b u g g i n g System  should  language  s h o u l d be be  language-dependent,  u s a b l e on  should  be  independent.  multilingual collections  4.  The system batch.  5.  Debugging s h o u l d terms.  6.  T r a n s l a t o r s should be allowed to successive layers of completeness.  7.  The s y s t e m run-time.  8.  Information supplied by t h e s y s t e m s h o u l d be p e r t i n e n t to the user's request.  9.  A s m a l l , u s a b l e , and s h o u l d be s u p p l i e d .  be  should  interactive-oriented,  done s y m b o l i c a l l y  in  but  usable i n  source  language  supply information i n  provide extensive a n a l y t i c  sufficient  set  system r e s o u r c e s should  of  information at concise  primitive  10.  Operating  11.  No t r a n s l a t i o n - t i m e m o d i f i c a t i o n s to the source s h o u l d be n e c e s s a r y t o c a r r y o u t d e b u g g i n g . Table I.  explain  D e b u g g i n g System  some b a s i c RAIDE c o n c e p t s  debugging system language A perform  program one  eguivalent  task.  interactive  session.  actions  n o t be d u p l i c a t e d .  Design  which  program  Criteria  are  reflected  of p r o c e d u r e s  Thus, the term  t o sy_stem o f p.rojgrams used  words, RAIDE i s d e s i g n e d  and  in  the  itself.  i s a collection  primary  of  by  t o debug a s i n g l e This  program may,  as  which i n t e r a c t  to  applied  is  many p e o p l e . program  here In  other  during  one  however, c o n s i s t  of a  Chapter  I I . , The  main p r o c e d u r e  Debugging  and  any  remembered t h a t , f r o m these subprocedures level  System  number o f s u b p r o c e d u r e s . RAIDE*s  viewpoint,  concept  RAIDE i s t h e  which  is  distinction  between a s p e c i f i c  program.  F o r e x a m p l e , X might be  might  be  reference  one  particular the  a  b a s i c to a proper  is  to a  particular  statement.  other  be  necessary  for  same  high-  one  10,  ples  of  generics refers  two  homogeneous  Furthermore,  classes.  block-structured  language,  PROCESS, PROCEDURE, BLOCK, and  manipulate.  Generics which  classes:  c l a s s of  Thus,  PARAMETER, and  entities  data  for  it  user's 10  m i g h t be  one  are  specifics. within  For  of which X i s  convenient  to  STATEMENT. which  the  one  examdivide  i s a generic  which  o f a u s e r ' s program c o d e .  typical  the  example,  STATEMENT a r e  is  A  variable, 10  variety. ,  For  segment-generics  are  A data-generic  refers  user's  program  a b l o c k - s t r u c t u r e d language,  are host-language-dependent. RAIDE  to  10  of  can  VARIABLE,  CONSTANT a r e examples o f d a t a - g e n e r i c s . /  segment  interfaced  :=  A seament^aeneric  t o some e x e c u t a b l e segment  to a p a r t i c u l a r  X :=  S i m i l a r l y , CONSTANT and  generics. into  e n t i t y i n the  and X  generic.  a generic--.is a s e t o f e n t i t i e s  a l l o f one  member.  a  particular  and  VARIABLE i s a r e f e r e n c e t o a c l a s s o f particular  understanding  and  particular  constant,  T h u s , X,  hand,  u s e r ' s program  tion  i t i s not  should  t o have a l l been w r i t t e n i n t h e  specific  a  It  language.  One  On  14  and  makes data.  RAIDE,  i t  concerning  The  only  presupposi-  them i s t h a t t h e r e a r e  For each language  which  is  is  supply  a  necessary  to  to  two be  set of  Chapter I I . generics. defined  The Debugging  Table  15  System  I I c o n t a i n s examples  f o r s e v e r a l well-known  o f g e n e r i c s which m i g h t be  programming  languages.,  language  segment-generics  d a t a-g e n e r i c s  ALGOL 68  PROCESS PROGRAM ROUTINE CLAUSE UNIT  VARIABLE IDENTITY DENOTATION YIELD  FORTRAN  PROGRAM SUBROUTINE FUNCTION STATEMENT  VARIABLE ARGUMENT ARRAY CONSTANT  L I S P 1.5  FORM FUNCTION  ATOM ARGUMENT PRO PERTY_ LIST  PL/I  TASK PROCEDURE BLOCK ON_UNIT STATEMENT  VARIABLE PARAMETER RETURNED_V ALUE CONSTANT  SNOBOL4  FUNCTION PREDICATE OPERATOR ST AT EM ENT  VARIABLE ARGUMENT LITERAL KEY80RD  Table  II.  Examples  The r e a d e r  of Possible Generics  may n o t i c e a  evidenced  by t h e d i s t i n c t i o n  Languages  w h i c h make l i t t l e  code  and  inclusion sarily  data  (e.g..  subtle between  of  segment-  RAIDE  Lisp)  are  by t h e s y s t e m  not  which  i s  executable  natural candidates f o r  inclusion  design.  Languages  and d a t a — g e n e r i c s .  o r no d i s t i n c t i o n between  w i t h i n RAIDE even t h o t h e i r  be p r e c l u d e d  bias  f o r Various  will  not  neces-  Chapter  II.  Related An  incident  The  t o the c o n c e p t  o f a g e n e r i c i s t h a t o f an i n c i d e n t . ,  i s some a c t i v i t y  which i s a s s o c i a t e d with a g e n e r i c . ,  system d e f i n e s both  correspond can  16  The D e b u g g i n g S y s t e m  segment-incidents  t o segment^ and d a t a - g e n e r i c s . ,  be a s s o c i a t e d w i t h  Similarly,  The a c t i v i t i e s  which  t h e s e g m e n t - g e n e r i c s a r e ENTRY and EXIT.,  T h u s , i t i s p o s s i b l e t o s p e a k o f PROCEDURE EXIT.  and d a t a - i n c i d e n t s t o  the  activities  ENTRY  associated  or  STATEMENT  with  the data-  g e n e r i c s a r e ACCESS and UPDATE f o r r e f e r e n c i n g and c h a n g i n g value every  of  item  data-generic  CONSTANTS fixed  an  cannot  of data. possess be  Note t h a t i t i s n o t n e c e s s a r y  both  data-incidents.  UPDATEd.  w i t h i n RAIDE and a r e n o t  In  the that  particular,  Unlike generics, i n c i d e n t s are specified  by  a  host  language  interfacer. Another any  system  occurrence  execution  concept  which  leaving  can  cause  RAIDE  in  Examples o f p o s s i b l e e v e n t s key of  i s t h a t o f an e v e n t . the the  interactive  to access  an a r r a y i n a program, and c h a n g i n g An  event  particular  source  OVERFLOW) i s c a l l e d expressions when *y').  dependent  which  i s  program  defined  (e.g.,  an e x c e p t i o n .  exceptions  exceptions  can  readiest  stop mode.  also  are be  element  o f some program  independently  o f some  ATTENTION,.!NTERSUPT  Other events  o f t h e v a r i a b l e * x*  A number o f  to  a nonexistent  the value  ( e . g . , "when x>y" t o r e p r e s e n t  the value  program  a r e pressing the a t t e n t i o n i n t e r r u p t  on t h e k e y b o a r d , a n a t t e m p t  variable.  user's  An e v e n t - i s  the  and  a r e d e s c r i b e d by event  occurring  exceeds t h a t o f t h e v a r i a b l e predefined, defined.  but For  languageexample, a  Chapter I I .  The  Debugging System  17  l a n g u a g e i n t e r f a c e r f o r S n o b o l 4 might d e f i n e When t h e  user  possible  actions  operation  w h i c h the  an  action  interacting  can  be  user's  deferred  proqram  action  by  i s any  leavinq action  i t s specification.  traps  {or  demons)  associated initiated  with  RAIDE,  a c t i o n i s any For  t o be  by  the  deferred  can  actions  must  a  displayed  system.  on  the  explicitly  c a n c e l  action;  cally  removed from t h e occurs.  the  Any be  action  allow  action i s  user  Whenever  the  the  The  system  action action  list.. from  action called  a  A  can  set  event  action  is  perform  maintains a l l  this list  list  to  Normally,  actions  of  immediately  the  RAIDE  is  user,  execution  which  some d e f e r r e d  deferred  to the  occur  occurs,  deferred.,  nonetheless,  Such an  actions  action  remove an  d i s p l a y  i n t e r a c t i v e r e q u e s t mode.  program.  deferred  many  primitive  example,  which does not  deferred  also  the  Deferred  within  with  immediately  event  An  perform.  information  upon  user  requested.  s y s t e m can  which c a u s e s  directly  i s another p r i m i t i v e a c t i o n ; i t i n i t i a t e s  execute  the  is  ST ATE HENT_FAII»0 RE.  using  the the  are  automati-  when the  associated  transigai  isJlglES^  action.  Altho  the  basic  actions  e x t e n d a b i l i t y i s provided  by  procedure  written  RAIDE. which user  i s a subroutine  A debugging an  a c t i o n can  with a l i b r a r y  standard  debugging  of  the  debugging  p r o c e d u r e can occur.  of  system  the  operations  called in  procedures which  A  debugging  primitive actions any  Thus, i t i s p o s s i b l e  debugging  f i x e d , system  procedures.  usinq be  are  are  which not  to  of  context  in  provide  the  perform provided  any as  Chapter  II.  The  Debugging  System  p r i m i t i v e a c t i o n s i n SAIDE. RAIDE  action  to  altho  i t  possible  is  accomplish (and  cause  this.  addition to  standard itself  library  provides  primarily  and  To  allow  the  generics  default  with  program  initiated. generic  and  contains  three named  reference  to  were  execution of  point) was  by  the  obtaining  the  procedure.  The  user,  by  the  a  system  freedom  point  active point  each o f user  t o the  suspended, or A  system  is For  specifics  system d e f i n e s a always  indicates  when a RAIDE a c t i o n i s used  to  disambiguate  e x a m p l e , i f the  which  contains  a  program distinct  of t h e  will  automatically  *foo*  i n the  c l o s e s t one can  a  »foo*s i s d e s i r e d i f  If execution  to the user  most  would a l w a y s have t o q u a l i f y  point..  t o •••fop*  the  built-in  program, t h e  references.  the  The  of  in identifying  reference  reference  name  A.,  currently  refer  suspension.  provided  the  reference  suspended, a r e f e r e n c e reference  procedures  *foo' t o i n d i c a t e which o f the no  procedure  c u r r e n t s t a t e of  executing  'foo',  to  i n t e r r o g a t i n g the  procedures,  variable  procedure  are  greater  specific  traced,  These f u n c t i o n s  point.  Thus, the  t o be  the d e c l a r a t i o n , l i s t .  i n Appendix  segment  primitive  functions.  as  within the  reference  i s no  a l l debugging  written  user  user  there  debugging  maintains  those  executing  a  debugging  such  f u n c t i o n s are l i s t e d  point  system  the  concerned  recently  there  write  several b u i l t - i n  debugging system,  the  to  The  example,  a l l procedure invocations  v a r i a b l e ) d e c l a r a t i o n s on  In  and  For  18  program i s (thru  the  p r o c e d u r e i n which accessible at  also establish a  the  reference  Chapter point  II.  The Debugging  different Finally,  system  at  from  System  the default.  the environment  any  19  particular  i s  the  time.  values of a l l of the data i n the reference in  RAIDE t o s a v e  placing tive  i t  system  replaced ity  point,  state  current  user's  the  list.  environment  current  by  the  default  I t i s possible naming  list.  environment  by one on t h e a c c e s s i b l e e n v i r o n m e n t  executing  includes the  program,  on t h e accessjLble e n v i r o n m e n t action,  the  An e n v i r o n m e n t  and t h e d e f e r r e d a c t i o n the  of  i t and  Using a can  list.  primi-  always This  be  facil-  a l l o w s t h e u s e r t o c h e c k p o i n t t h e s t a t e o f t h e s y s t e m and t o  subseguently  restore i t .  Once t h e b a s i c  concepts described  above a r e u n d e r s t o o d , t h e  RAIDE u s e r s h o u l d be c a p a b l e o f l e a r n i n g  the  system  debugging  language. C,  Overview Before  system  o f the Implementation proceeding  language,  implementation ing  of  complete  with  a  description  of  the  debugging  i t i s d e s i r a b l e t o p r e s e n t an overview o f t h e  of the debugging  i t s components  when  description  the  of  system  t o i n s u r e an  understand-  they a r e presented i n d e t a i l . • , A implementation  is  contained  in  C h a p t e r V. Figure  I I - 1 i l l u s t r a t e s t h e debugging environment  by t h e s y s t e m . indicate  In  this  figure,  the  i n t e r m o d u l a r communication.  lines  provided  connecting  Each i n t e r f a c e  boxes  i s assigned  Chapter I I .  I  The D e b u g g i n g  I  I  L1  20  System  Ln  |  I  I  T  Y  i I |  I  T1  Tn  |  I I  i<T —i  /  / I II ->ll u s e r | II I -  RAIDE  L  /XXXXXXXX/ /  ( :. T  i— I  IF  IG  T  1  I translatedfI program i  I A B C D E F G  ] /  I  r~ I I >| —>|  1  • SPAM  I  r e q u e s t s from t h e user ( w r i t t e n i n D i s p e l ) BAIDE*s r e s p o n s e s t o u s e r r e q u e s t s i n f o r m a t i o n s u p p l i e d t o RAIDE by t h e l a n g u a g e i n t e r f a c e r s i n f o r m a t i o n s u p p l i e d t o RAIDE by t h e t r a n s l a t o r s i n f o r m a t i o n s u p p l i e d t o SPAM b y t h e t r a n s l a t o r s a n a l y s i s a n d m o d i f i c a t i o n o f t h e u s e r program by RAIDE i n t e r a c t i o n s o f RAIDE and SPAM Figure  II-1.  Overview o f t h e Implementation  Chapter I I .  The boxes L 1 ,  a letter for identification. the  21  The Debugging System  languages which are i n t e r f a c e d t o RAIDE.  using the debugging system, language RAIDE <C).  |  .. .,  1.  with This  Ln  represent  For each language  interfacers  must  provide  i n f o r m a t i o n that i s dependent on each host language information,  which  is  summarized  in  Table I I I ,  d e f i n i t i o n s of t h e segment- and d a t a - g e n e r i c s  J  J 2.  run-time e r r o r messages  I  j 3.  i d e n t i f i c a t i o n o f any language-dependent e x c e p t i o n s  I  | 4. |  d e f i n i t i o n s o f g e n e r i c - r e l a t e d and language-dependent system I functions I  j I I  Table I I I . —  —  I n f o r m a t i o n S u p p l i e d to RAIDE by the Language Interfacers  -  .__  ;  •  —  - , — _ _ _ _ _  .—  i n c l u d e s the d e f i n i t i o n s of the segmenteach  language,  the  set  of  and  language-dependent  and  generic-related  definitions  of  any  of  run-time e r r o r  messages, i d e n t i f i c a t i o n of any the  — — — — J  data-generics  language-oriented  I J  and  exceptions, language-  dependent system f u n c t i o n s . For each language L i i n t e r f a c e d t o the system, exist  at  debugging.  As  stated  to  facilitate  language  independence.  run-  p r e v i o u s l y , the system runs using  t r a n s l a t e d source code to e x p e d i t e implementation and to source  must  l e a s t one t r a n s l a t o r T i which has been c o n s t r u c t e d or  modified t o f u r n i s h RAIDE with i n f o r m a t i o n time  there  To  insure  accomplish t h i s , a v i r t u a l  Chapter  II.  The D e b u g g i n g  debugging  machine  described  i n Chapter  the system RAIDE.  (which  22  i s called  IV.  must s u p p l y  System  SPAM) has been d e f i n e d and i s  Each l a n g u a g e  i n f o r m a t i o n both  t o SPAM  •  1.  SPAM  descriptions  |  3.  run-time  type  \ 4.  run-time  bounds t a b l e  Table IV.  L  o f a l l program  J I  .  t o SPAM  (E).  ,  __  virtual  machine  program code s e g m e n t s and d a t a f o r array  the  The  (i.e.,  source  symbol  with  a  i t e m s , a type checking.  In addition, description table,  program  ,—I  The  code  itself.  of a l l  translators  table information,  This  they  and a bounds  a  must  description  t e x t u a l ) s t r u c t u r e of the source  program,  information  is  i n T a b l e V.,  user  directs  t h e debugging  terminal using the  called III.  subscript  (D) w i t h  static  the  outlined  tive  RAIDE  :  \  T r a n s l a t o r s u s i n g RAIDE must map t h e  the  supply  I  table  must  and  «  J  program i n t o SPAM machine c o d e .  furnish  :  code segments a n d d a t a i t e m s  :  furnish  table  ~~  :  user's source  of  to  I n f o r m a t i o n S u p p l i e d t o SPAM by t h e T r a n s l a t o r s  ;  must  and d i r e c t l y  machine c o d e f o r t h e u s e r program  | 2.  |  interfaced to  T a b l e IV o u t l i n e s t h e i n f o r m a t i o n w h i c h t h e t r a n s l a t o r s  r  I  translator  Dispel.  debugging  T h i s language  RAIDE * s r e s p o n s e s  system system  (A) from language,  i s described i n d e t a i l  t o user requests  (B) a r e  an i n t e r a c which  is  i n Chapter  directed  back  Chapter I I .  The D e b u g g i n g  System  i  23  •  — • — "  '—~  1  :  J 1.  r u n - t i m e symbol  | 2. |  s t a t i c s t r u c t u r e o f t h e program i n t e r m s o f t h e segmentgenerics  I I  j 3.  source  I  |  Table  program  V.  1  table  code  Information  L  Supplied  . to  the t e r m i n a l .  information language  (G),  and  to  RAIDE must i n t e r a c t Nevertheless, virtual  execution, error  program  traps, to  modify  directly  machine.  execution  the with  When SPAM  with  RAIDE u s e s t h e  design  the  RAIDE  that f u l l y  this  i s  not  run-time  with  analysis  translated  program  i s p r i m a r i l y c o n t r o l l e d by  information  (G).  program  concerning the  Likewise,  i n successive  RAIDE  the  case  as  can  the s t a t e of (G). be  l a y e r s of complete-  the information  as outlined i n Tables  cooperating  (F).  6 s t a t e s that t r a n s l a t o r s should  information  the  o f program v a r i a b l e s ,  SPAM t o i n q u i r e c o n c e r n i n g  criterion  RAIDE,  imply  (Fl,  d e t e c t s an e r r o r d u r i n g  The d i s c u s s i o n c o n c e r n i n g to  values  program  a n d t o make c e r t a i n m o d i f i c a t i o n s t o i t  t o supply  supplied  _  o f program and system  obtain  t h e t r a n s l a t e d program  directly  allowed ness.  and i t s own r e c o r d  i t supplies  System  requests,  translated  and t h e s t a t e o f t h e program  interact  1  ;  the user's  (D), t h e  To s e t program  information,  the  — _  ;  s u p p l i e d t o i t by t h e l a n g u a g e i n t e r f a c e r s ( C ) , t h e  machine  execution.  j  .  To p r o c e s s  translators  virtual  t o RAIDE by t h e T r a n s l a t o r s  which  must  be  I I I t h r u V, seems t o  t r a n s l a t o r s are necessary;  however,  t h e d i s c u s s i o n so f a r h a s c e n t e r e d  C h a p t e r I I . , T h e D e b u g g i n g System a r o u n d t h e most outlines  complete  24  debugging  the l e v e l s o f support  configuration.  Table  a t which t h e debugging  71  system i s  capable of running. Seven s u c c e s s i v e l y port  are  defined.  more c o m p l e t e l a y e r s  In  the  a v a i l a b l e and t h e v i r t u a l overhead.  At  this  basic  machine  level  tables.  program r u n n i n g than  The  the  machine  available, checks are  basic  the  virtual  the  minimum  of  required  to  and t o s u p p l y t h e  type  that  i s  more  sophisticated  The next l e v e l  level.,  Altho  machine  will  RAIDE  of support i s  is  again  make a d d i t i o n a l  not  run-time  <e.g., s c o p e v i o l a t i o n s a n d m i s m a t c h e d p a r a m e t e r s )  not  performed  i n t h e most b a s i c  These a d d i t i o n a l checks a r e not execute  properly,  but  and  machine l e v e l c o r r e s p o n d s t o a u s e r  i n existence.  debugging  with  sup-  RAIDE i s n o t  the t r a n s l a t o r s are only  on a b a r e m a c h i n e  many c u r r e n t l y  debugging  machine l e v e l , runs  g e n e r a t e SPAM c o d e a n d d e s c r i p t o r s , bounds  of  are  mode o f m a c h i n e  required  intended  f o r the  to further  which  execution. machine  to  t h e debugging  process.  RAIDE i t s e l f the At  third this  level  level  executing  i s n o t a p r o p e r component o f t h e s y s t e m  o f debugging support,  RAIDE i s o n l y  simple  interactive  value of a variable. with  enough  error  conditions  some  symbol  capable  of  requests,  symbolic  reporting such  detected  to  properly  by SPAM.  information  and  as inspecting the RAIDE  i n t e r p r e t and r e p o r t t h e  T h e t r a n s l a t o r s must  so t h a t  level.  errors  T h e l a n q u a q e i n t e r f a c e r s must s u p p l y  information  table  the simple  until  detailed  error  supply messages  Chapter I I .  level 1.  The D e b u g g i n g  of support  basic  machine  module translator SPAM R AIDE  2.  machine d e b u g g i n g  simple  symbolic  inter facer translator RAIDE  4.  symbolic  debugging  interfacer  translator RAIDE 5.  full  debugging  translator RAIDE  6.  full  analysis  7.  deluxe  debugging  Table VI.  g e n e r a t e s SPAM c o d e and d e s c r i p t o r s , and s u p p l i e s t y p e and bounds t a b l e s executes code n o r m a l l y checking f o r basic run-time e r r o r s not a v a i l a b l e makes a d d i t i o n a l c h e c k s on o p e r a n d s and i n t e r r u p t flags not a v a i l a b l e  SPAM RAIDE  3.  25  System  supplies generic information and e r r o r messages s u p p l i e s some symbol t a b l e information a v a i l a b l e f o r simple i n t e r a c t i v e reguests i d e n t i f i e s languagedependent e x c e p t i o n s and defines generic-related system f u n c t i o n s s u p p l i e s c o m p l e t e symbol table a v a i l a b l e f o r more complex i n t e r a c t i v e reguests d e s c r i b e s s t a t i c program structure can respond to r e g u e s t s i n v o l v i n g s t a t i c program structure  RAIDE  keeps r u n - t i m e statistics  translator RAIDE  s u p p l i e s s o u r c e program code can respond t o r e q u e s t s t o d i s p l a y s o u r c e code a t run-time  Levels  o f Debugging  Support  analysis  Chapter can  II.  The D e b u g g i n g System  be g e n e r a t e d  identify  the  i n symbolic  system  supply t h e complete  If  debugging  symbol t a b l e ,  nesting  of the user  capable  of  program  level  is  initiating  a  level,  many t i m e s  variable  i s  tors supply respond  as  the  translators of  initiating  displaying  T h i s corresponds  description  entered.,  At  each  the source  of  of  the  to the  the  static  analysis  In t h e deluxe code.  request t o display  tracing,  ;  is  This  static  postmortem  In  the  statistics,  executed  debugging  or  level,  enables  the  RAIDE i s  the  traps).  program s t a t e m e n t  program  level,  involve  ( e . g . , dynamic f l o w of i n t r i c a t e  variables)*  this  which  RAIDE k e e p s r u n - t i m e  accessed.  to a user  define  (e.g., i n f o r m a t i o n concerning t h e  requests  t r a c e b a c k s , and t h e s e t t i n g  at  RAIDE i s c a p a b l e  user r e g u e s t s , such  supply  s t r u c t u r e o f t h e proqram  analysis  and  language  o f s e g m e n t - s p e c i f i c s and t h e s c o p e  debugging  interfacers  levgl.  the t r a n s l a t o r s  structure  how  exceptions  s t a t e o f t h e e x e c u t i n g program.  symbolic  as  I f the language  f u n c t i o n s , and t h e  more complex i n t e r a c t i v e  fail  terras.  language-dependent  generic-related  current  26  f&li such each  translaRAIDE  portions o f the source  to code  run-time. For  with  t h e most p a r t , t h e u s e r  the  levels  always inform the performed  of user  debuqqing i f  some  will  n o t need  support,  ;  be  concerned  s i n c e t h e system  reguested  due t o l a c k o f i n f o r m a t i o n .  to  action  cannot  will be  27 C h a p t e r I I I . , The  For  the  provide  a  u s e r t o communicate language  supporting  future  debugging  extensions  Specification  of  Language),  than f o r i t s acronymic Dispel's  description  of  using  language A.  The should  and  called  Dispel  more  first  finally  for  its  s e c t i o n of  This  is  of  (Debugging mnemonic  this  chapter  followed  by  language  debugging  a discussion  a  itself, requests  o f how  well  the  i t s goals.  most  obvious the  basic  design  design  criterion  criteria  i n t e r a c t i v e - o r i e n t e d and  number  of  primitive  Schw  actions.  of D i s p e l  RAIDE In  itself  particular,  should  only  i s that i t and  the  contain  i t i s also necessary,  other  criteria  [Brad  68,  should language a  small  however, Gris  71a,  71). should  syntax i s clean  and  be  uniform.  consistent  s y n t a c t i c exceptions  a l w a y s used  of  RAIDE c o n c e p t s .  language s a t i s f y  Dispel  few  The  examples  must be  of  debugging environment.  s e m a n t i c s o f the  the  Hann 73,  and  Criteria  reflect  the  p r i m i t i v e system a c t i o n s  criteria.  embody  that  to  is  The  several  Dispel,  fulfills  Design  value.  Language  RAIDE, i t i s n e c e s s a r y  a name c h o s e n  s y n t a x and  a section containing coded  to the  RAIDE  design  the  System  with  embodying t h e  language  describes  Debugging  i n the  same way  Uniformity  since and  implies  i t connotes  special  regardless  of  cases. its  the  that  existence  A construct  context,  the  is  Impor-  Chapter tant  III.  The  Debugging  attributes  described and  of  a  succinctly  that  i t  is  System L a n g u a g e  uniform  language  {cf. , t h e A l g o l 68  easy  to learn  and  28 are  syntax  that  i t can  chart  t o implement  f Hatt  [VanW  be  74])  76:sec.  0.1.2]. Altho the language should reasonably  simple  essary semantic  complexity  A l g o l 68  Revised  complex,  the  This  is  of the system  complex  system  In and  Report  languages. language  must  may  76]  introduce  says).. I f the  have  clearly  to  debug  undesirable the  But  simplicity, be  total  the  become  taken  unnec-  since  the  debugging  the  than  overall  effort.  readable  host  with  A  an a s s e t .  l a n q u a q e must be  confused  as  debugging  to i n s u r e t h a t the  easily  be  language i s  the  a n a t u r a l e x t e n s i o n of t h e  c a r e must be not  also  {or d e l e t e r i o u s s u p e r f l u i t i e s ,  i s t o reduce  to  appear to  does  i t  i s f r e q u e n t l y more o f a l i a b i l i t y  addition  should  uniform,  U n i f o r m i t y must not  [VanM  programmer  procedures! intent  t o use.  be  source  debugging the  host  languages. To  fulfill  system  pertinence of the syntax  of  s h o u l d be fully  and  design c r i t e r i o n  information  Dispel should encouraged to  supplied  debugging  which d i s c o u r a g e s e x c e s s i v e o u t p u t that  the  language  be  compromise between t h e s e  (viz., conciseness  and  by  the  the  system),  discourage voluminous output.  t o c a r r y out  avoid  8  concise. two  the  debugging  by d e l u g e . may It  criteria  Designing  conflict i s not should  process  be  with obvious made.  The  user  thoughta the  syntax goal  where t h e  Chapter  III.  The syntax  The D e b u g g i n g  final,  important  should  allow  System Language  design c r i t e r i o n  for  If  extendability  t h e debugging  primitive  will  actions,  and  debugging  sary  change  future In in  the  syntax  envisioned.  supply  procedures  language e x t e n d a b i l i t y .  of t h e d e b u g g i n g  t h r u debugging  i t s language  requisite to  currently  be p r o v i d e d  system  of Dispel i s that the  p o s s i b l e extensions  e n v i r o n m e n t t o meet new n e e d s n o t guage  29  will  Thus, i t s h o u l d  Lan-  procedures. sufficient afford  n o t be  the  neces-  of the l a n g u a g e i t s e l f to f u l f i l l  reguirements. summary, t h e d e s i g n c r i t e r i a  Table  VII.  After  D i s p e l and g i v i n g these c r i t e r i a  detailing  the  syntax  listed  and s e m a n t i c s o f  a number o f e x a m p l e s , a d i s c u s s i o n o f how w e l l  a r e met w i l l  be made.  1.  The l a n g u a g e s h o u l d  2.  Only  3.  The l a n g u a g e concepts.  4.  The s y n t a x  5.  The l a n g u a g e s h o u l d  6.  It should programs.  7.  The l a n g u a g e s h o u l d  discourage  8.  The l a n g u a g e s h o u l d  be  be  interactive-oriented.  a small s e t of p r i m i t i v e  Table  d i s c u s s e d above a r e  should  should  be  Vll.  embody  be  a c t i o n s s h o u l d be s u p p l i e d . the  basic  debugging  system  uniform. be s i m p l e  easy  to  t o use.  read  and  understand  voluminous  output.,  extendable.,  D e b u g g i n g Language D e s i g n  Criteria  debugging  Chapter I I I . B.  The D e b u g g i n g S y s t e m Language  S y n t a x and S e m a n t i c s In  the  ensuing  discussion,  Dispel  i s presented  using  guage  Backus-Naur  Form  sguare brackets (O)  t  unit.  symbols) angle  of  Also,  are  using  a l e s s prosaic using  the  follow, entities the  (BNF) .  several  Two e x t e n s i o n s  constructs  of the syntax o f  t o BNF a r e u s e d :  a syntax c h a r t ,  semantic  upper-case (e.g.,  names o f s y s t e m  (i.e.,  the  as a  terminal  syntactic specification  i s i n Appendix  B.  the semantics of D i s p e l  metalanguage identifiers  generic  and b r a c e s  and n o n t e r m i n a l s y m b o l s a r e d e l i m i t e d  A more c o m p l e t e  substitute,  metalan-  which a r e t r e a t e d  t h e keywords o f D i s p e l  (<>).  program-dependent of  outline  a v a r i a t i o n of the s y n t a c t i c  i n boldface  brackets  Dispel,  an  (f ]) t o d e l i m i t an o p t i o n a l c o n s t r u c t  cj^oup t o g e t h e r  o  single  by  30  English. represent  For l a c k o f is  I n t h e examples t o language-dependant  names), i n c i d e n t s , e x c e p t i o n  functions. entities  presented  names, and  Lower-case i d e n t i f i e r s  (e.g.,  specific  represent  names) a n d t h e names  d e b u g g i n g v a r i a b l e s and p r o c e d u r e s .  The  f u n d a m e n t a l s y n t a c t i c e n t i t y i s an < u t t e r a n c a > .  <utterance>  ::= | J I j  <explanation> . <inguiry> . <declaration> . <definitionX . <command> .  The  <utterance>  the  full-stop  only  f o r syntactic correctness;  interpretation.  i s the basic (.)  is  unit of interactive  encountered,  input.  t h e <utterance>  Until  i s checked  the f u l l - s t o p i n i t i a t e s  semantic  Chapter  III.  The  s y n t a x o f an < e x p l a n a t i o n > i s :  <explanation> An  ::= e x p l a i n  <explanation>  possible  <keyphrase>  f u r n i s h e s t h e u s e r w i t h an e x p l a n a t i o n o f some  component o f t h e s y s t e m ,  terms  as s i g n i f i e d  <keyphrase>s w i l l  as  "command",  "deferred  action".  system  system thru  <utterance>  document q u e r y i n g  enables a l i n k which  into a natural  such and  provides the  facility.  language  interroga-  p r o v i d e s i n f o r m a t i o n c o n c e r n i n g the debugging  and the s t a t e  o f program e x e c u t i o n by The f o l l o w i n g  means  i s a sample  other  than  <inguiry>.  " I n t h e p r o c e d u r e F00, what i s t h e v a l u e o f t h e v a r i a b l e Z the f i r s t  time X i s g r e a t e r than Y?".  An < i n g u i r y > c a n be u s e d t o e x t r a c t prefers  "specific",  The  :<sentence>  D i s p e l <coamand>s.  i n q u i r e  but t h e y i n c l u d e  "display",  The < e x p l a n a t i o n >  ::=• i n q u i r e  <inguiry>  tion  <keyphrase>.  <inguiry> has t h e s y n t a x :  <inquiry> An  by t h e  not be l i s t e d ,  "break",  r u d i m e n t s o f an i n t e r a c t i v e  An  31  The Debugging System Language  to  <sentence>  express i n n a t u r a l  i s unspecified  i n f o r m a t i o n which  language  as f a r  as  terms.  the  the  user  The s y n t a x o f a  debugging  system  variables,  as  i s  concerned., A to  user  <declaration> program  <declaration>  specifies  debugging  opposed  variables.  ::= < i n t e g e r - d e c l a r a t i o n > | <specific-declaration> < i n t e g e r - d e c l a r a t i o n > ::= i n t e g e r £ ( < e x p r e s s i o n > ) ] < i d - l i s t > < s p e c i f i c - d e c l a r a t i o n > ::= s p e c i f i c [ ( < e x p r e s s i o n > ) ] < i d - l i s t > < i d - l i s t > ::= < i d e n t i f i e r > [, < i d - l i s t > ]  Chapter I I I ,  As  indicated  above,  the  i n t e g e r s and s p e c i f i c s . declaration  two t y p e s o f d e b u g g i n g  The o p t i o n a l  of debugging a r r a y  integer value debugging  variables  chapter,  at  which  denotes  v a r i a b l e s ; i t must e v a l u a t e  i n d i c a t i n g the size of  array  variables are  <expression>  are  the  time  array.  selected  Examples o f debugging v a r i a b l e s a r e g i v e n this  32  T h e D e b u g g i n g System L a n g u a g e  their  t o an  Elements  using  of  subscripts.  i n the l a s t  utility  the  will  section of become more  apparent. A <definition>  identifies  a debugging  procedure.  : : = d e f i n e ;<procedure-id> [ ( < d e c l a r a t i o n - l i s t > ) ) a s <command> < d e c l a r a t i o n - l i s t > ::= < d e c l a r a t i o n > T ; < d e c l a r a t i o n - l i s t > ]  <definition>  The  optional < d e c l a r a t i o n - l i s t > s p e c i f i e s the formal  of  the  dure  debugging procedure.  (as i d e n t i f i e d  <command> The  by i t s  associated  with  most i m p o r t a n t  Whenever i n i t i a t i o n  <procedure-id>)  the < d e f i n i t i o n >  <utterance>  is  parameters  of the proce-  indicated,  the  i s initiated..  o f D i s p e l i s t h e <command>.  <command> ::= [ < w h e n - c l a u s e > ] < a c t i o n > <when-clause> ::= [ < l a b e l - i d > ; ] <when> <when> : : = w h e n < c o n d i t i o n > ) o n <exception-list> |  before  <specific-incident-list>  <specific-incident-list> <exception-list> <exception> f , < e x c e p t i o n - l i s t > ] < s p e c i f i c - i n c i d e n t - l i s t > ::= < s p e c i f i c - i n c i d e n t > r, <specific-incident-list> ] |  The  a f t e r  <when-clause> o f a <command>  t o become a d e f e r r e d clause> list. occurs,  i s used For a the  action.  causes t h e a s s o c i a t e d  the  <when-  t o remove t h e a c t i o n f r o m t h e d e f e r r e d  action  deferred associated  The  action, <action>  <label-id>  whenever  the  i s initiated.  of  <action>  specified <action>s  event which  Chapter are  III.  The D e b u g g i n g  33  System Language  not deferred are i n i t i a t e d  immediately  upon  entry  by the  user. If  a  procedure, are  not  <when-clause>  canceled  when  within  referenced  <when^clause>s  have  <cancel-action> are  <condition> initiated  of  their  form  actions  i s used four  the  of that  Thus, t h e procedure a n d c a n be  scope.  If  several  f o r t h e same e v e n t , o n l y t h e be i n i t i a t e d  when  f o r t h e same e v e n t  forms  procedure  of  are global  t o remove an a c t i o n  specifies  whenever  will  debugging  i s exited.  textual  been e x e c u t e d  deferred action  Deferred  There  procedure  a l l <label-id>s  regardless  most r e c e n t l y  the  of  a  o f d e f e r r e d a c t i o n s i s independent  Furthermore,  occurs.  contained  any a c t i o n s d e f e r r e d by e x e c u t i o n  establishment scope.  i s  the  the stack.  <when-clause>^ <action>  <condition>  i s t o be  becomes  c a n be any e x p r e s s i o n w h i c h y i e l d s a b o o l e a n  For  "when  mode  x>y  i s t o be e n t e r e d  value of the variable means  break'!  by  dependent. specifies  which  (i.e.,  a break  'x* i s g r e a t e r  this  trap  the i n t e r a c t i v e  i s to occur) than  that  the  associated  <exception>s  that  i s established  The o n < e x c e p t i o n - l i s t > form  whenever one o f a s e t o f possible  means t h a t  <action>  possible  are not  of  ATTENTION_INTERRUPT  g a i t "  will  value.. request  *y*.  The  i s implementationthe  i s to  <when-clause> be  initiated  occurs.  here, but they  ATTEMTioN_INTERRUPT, OVERFLOW, a n d ZERODIVIDE.  true.  whenever t h e  of  <exception>s  listed  when  The  <condition> example,  event  are stacked; the  from  the associated  the indicated  the  The  include  For example,  c a u s e RAIDE t o be e x i t e d  " o n  i f the  Chapter  III.  attention of  the  The Debugging System L a n g u a g e  interrupt  key i s p r e s s e d .  <when-clause>  initiated  before  cause  before  The  the  34  associated  o r a f t e r some p a r t i c u l a r  and  after  <actio.n>  incident  forms to  occurs.  be For  example,  after each sets  a  STATEMENT  trap  after  "each  •foo . 1  pinpoints  in  each executable  STATEMENT  the  foo"  of  a  is  statement a  i n the  procedure  <specif i c - i n c i d e n t > ;  trap.  The  copplete  i t  syntax of  follows.  <specific-incident> <specific>  in  setting  <specific-incident>  break.  foo  <specific> f<generic-incident> ]  <variable> <generic> f < s e g m e n t - g u a l i f i e r > ] <generic-incident> <segment-incident> j <data-incident> < s e g m e n t - i n c i d e n t > : := INT EX J EXIT < d a t a - i n c i d e n t > :;= ACCESS | UPDATE  | [each]  <variable>  ::= [ < g e n e r i c > : j < u n g u a l i f i e d - v a r i a b l e > [ <segfflent-qualifier> 3 <ungualified-variable> <subscripted-variable> [. < u n g u a l i f i e d - v a r i a b l e > ] S u b s c r i p t e d - v a r i a b l e > ;:= < v a r i a b l e - i d > f ( < e x p r e s s i o n - l i s t > ) ] <segment-gualifier> ::= in <vaciable> <expression-list> The into  each a  < e x p r e s s i o n > [,  form o f t h e < s p e c i f i c > i s u s e d t o t r a n s f o r m sequence  of  languages-dependent. sequence For  of  example,  <specific>s. I t should  <specific>s  "each  VARIABLE  declared  i n the procedure  Likewise,  "each  declared  <expression-list>]  local  PROCEDURE  The p o s s i b l e < g e n e r i c > s a r e  be n o t e d  based  in  that  on t h e i r foo"  foo"  t o •foo', not those  "each**  a  a l l variables  r e f e r e n c e d i n •foo'.  identifies  invoked  generates  textual organization.  identifies  »foo*, n o t t h o s e  in  a <generic>  from  the *foo*.  procedures  Chapter  III,  It  The  i s important  <specific>s  are  specification <specific> static  evaluated  of  evaluation:  of  the  not  or  deferred  evaluated  The  static,  the  cally.  During  basic  ace  d y n a m i c , and  are evaluated  within  During  contained  o f debugging  the  deferred  <specific>s  within procedures  actions  actions  of  times  affects  the  forms  of  continual. o n c e , upon The  During specifi-  <specific>s i n and  all  those  procedures  evaluation.  o f the  within the  what  three  debugging  dynamic  <when-clause> a r e e v a l u a t e d  The  There  greatly  are  <specific>s  <command> c o n t a i n i n g  deferred  actions  are evaluated  continual'•• e v a l u a t i o n , - . < s p e c i f i c > s  until The  this  once, upon i n i t i a t i o n  bodies  repeatedly canceled.  contained  <specific>s  within  the  since  at  f o r m s o f t h e <when?-clause>  statically.  evaluated  understand  < u t t e r a n c e > c o n t a i n i n g them. after  them.  user  <utterance>s.  t h e b e f o r e and  are  t h a t the  evaluation, <specific>s  cation  35  D e b u g g i n g System L a n g u a g e  are  containing  and  dynami-  evaluated them  when < c o n d i t i o n >  form  are of  continually.  RAIDE  are  specified  i n Dispel  as  follows. <action>  : =  <compound-action> <break-action> <call-action> <cancel-action> < d i s p l a y- a c t i o n > <execute-action> <for-action> <if-action> <input-action>  These <action>s keyword  a r e d e s c r i b e d below  which b e g i n s  each.  1 <guit-action> j <reference-action> | <restore-action> I <save-action> \ <set-action> J <skip-action> J <system-action> I <while-action> i n a l p h a b e t i c order  of  the  Chapter  III.  The  The Debugging  <compound-action>  grouping  of m u l t i p l e  <compound-action>  36  i s a s y n t a c t i c device  to  allow  the  have a s c o p e and  life-  a c t i o n s i n t o one.  <command-list>  [<declaration-list> ; ] <command-list> e n d ::= <command> [ ; <command-list>]-  <declarations  w i t h i n a <compound-action>  time l o c a l an  :  System Language  :=  b e g i n  to the defined  block.  The  <compound-action>  e n t i r e s e r i e s o f <command>s t o be s p e c i f i e d  allows  wherever a s i n g l e  < a c t i o n > c a n be s p e c i f i e d . The  <break-action>  i n d i c a t e s that  to the i n t e r a c t i v e request for  use w i t h i n  Its  syntax i s :  deferred  <break-action> When  a  actions  b r e a k  <break-action>  debuqqinq <message> enters  ::=  mode.  to  revert  The < b r e a k - a c t i o n > i s d e s i g n e d and d e b u g g i n g  procedures  only.  is  .  initiated, the  mode w a i t i n g  the  break  d i s p l a y e d on t h e o u t p u t  the request  i s  [<message> ]  procedure - c o n t a i n i n q i s  processing  deferred i s  terminated,  display device,  f o rthe  a c t i o n or  specification  the  and B&IDE of  some  <utterance>. The after  <call-action>  p r o c e d u r e t o be c a l l e d  e v a l u a t i o n , of i t s a r g u m e n t s .  <call-action> Recursive passing The be  causes a debugging  ::= c a l l  debugging  < p r o c e d u r e - i d > {{ < e x p r e s s i o n - l i s t > )••]  procedures  mechanism i s c a l l <cancel-action>  removed from  are  supported.  The  parameter  by r e f e r e n c e , a s i n P L / I [ IBM 7 0 ] . c a u s e s one o r more d e f e r r e d  the deferred  action  list.  actions to  Chapter  III.  The D e b u g g i n g S y s t e m L a n g u a g e ::= c a n c e l  <cancel-action> <cancel-list> without  c a n c e l  it  ::=  37  [<cancel-list>]  {<label-id>  | <variable>|  (,  <cancel-list>}  an argument i s used o n l y w i t h i n d e f e r r e d a c t i o n s ;  c a u s e s t h e d e f e r r e d a c t i o n w h i c h c o n t a i n s i t t o be  Deferred listing was  a c t i o n s which the <label-id>  not  labeled,  <label-id> function  (e.g.,  the  to i t ; this  The  system. w i l l  label  to also identify  <display-action>  to  be  auxiliary  foo).  c a n c e l  I f a deferred action  automatically  assign The  a  system  ( c f . , Appendix ft) c a n be u s e d a s a  a c t i o n s t o be c a n c e l e d .  c a u s e s one o r more p i e c e s o f  d i s p l a y e d on t h e o u t p u t  file  c a n be c a n c e l e d by  i s used t o c a n c e l i t .  DEFEBRED_aCTION_LIST  <variable>  tion  were g i v e n < l a b e l - i d > s  canceled.  informa-  d i s p l a y d e v i c e , o r on some  or device.  < d i s p l a y - a c t i o n > ::= d i s p l a y < w h a t - l i s t > f o n <file-name>l < w h a t - l i s t > ::= < e x p r e s s i o n > f a s <type>] [, < w h a t - l i s t > ]| When  the  <display-action>  <expression>s defaults  to  <file-name> otherwise, suitable to  the  i s an  output  the  this  will  default. next  the  designated  <file-name>,  device.  be  The Unless  displayed  which  syntax  of  indicated  in  t h e <type> c l a u s e c a n  a  format be  used  Numerous examples o f t h e < d i s p l a y section.  The  <display-action>  a d i s p l a y b u f f e r o f a l l < e x p r e s s i o n > s t o be  This buffer i s presented  t h e format  file  display  attributes;  are given i n the  displayed.  on  <expression>  works by m a i n t a i n i n g  of  printed  initiated,  operating-system-dependent.,,.  t o i t s type  override  action>  are  i s  t o the user e i t h e r  f u n c t i o n s PAGE o r L I N E i s  A) o r when t h e i n t e r a c t i v e r e q u e s t  d i s p l a y e d  when one  ( c f . , Appendix  mode i s e n t e r e d .  Chapter  III.  The ted,  The  point  e x e c u t e  f <expression>  i  e x e c u t e  w h i l e  of suspension  a r e imposed. deferred  appropriate  event  <execute-action>  program  source-level generic> for  actions  statements of  defaults  to  of  <execute-action>  which  the  t h e ^ program.  causes  RAIDE.  the  addition constraint  The  program  becomes  It i s felt  phase  avoided of  The  or  other  t h o u g h t o f as  break  when  the  of  the  segment-generics  3 STATEMENTS" c a u s e s  the  just in  the  other alternative be  resumed  I t s h o u l d be  until  the  noted  that  i s not  i s not  i t s h o u l d be a v o i d e d  language the  of the  location  such a f a c i l i t y  as u n r e s t r i c t e d  source  defined  allows the user t o step  a t an a r b i t r a r y that  <segment-  seqment-qeneric  false.  <skip-action>,  tolerable.  procedure.  to  and i s e r r o r - p r o n e , and t h a t  be  a  number o f  T h i s form  o f t h e u s e r ' s program  debugging  point),  alternative  the l o w e s t - l e v e l  resumption  should  first  current  <condition>  structured  cause  "execute  indicated  in  point.  at  t o be resumed f o r t h e e x e c u t i o n o f e x a c t l y t h r e e  execution  allowed  t o be resumed  reference  suspension  The  F o r example,  ~\ ]  a r e t h e same e x c e p t t h a t e x e c u t i o n  the host source language.  thru  RAIDE.  e x e c u t i o n l i m i t s can be  occurs.  execu-  <condition>  causes a p a r t i c u l a r  be e x e c u t e d .  user's  These  t o be  [ <segment-generic>  (i.e.,-the default  i t s b e g i n n i n g i f t h e r e i s no  transient  the  the u s e r ' s program  ::=  forms o f t h e <execute-action>  to  38  w i t h o u t an argument c a u s e s t h e program  e x e c u t e  limits  Language  t h e i n t e r a c t i v e r e q u e s t mode of  <execute-action>  at  System  <execute-action> causes  leaving  its  Debugging  transfers programs.  user  should  of  well in  control  With find  the this  Chapter  I I I . , The Debugging  The  <for-action>  repetitive  a  control  :: = f o r < s p e c i f i c - l i s t > d o <action>  <specific-id>  scope  is  identifies  encompassing  the" repetitive  t o be o f t y p e s p e c i f i c .  a  of  specifics,  assigned  to  the  <action>  i s  initiated,  association  The two  the  ->  variable  <action>.  members  of Each  <specific-id>  within the r e p e t i t i v e  actions  allows  <specific-id> which  has  a  It i s implicitly identifies  which  are successively  time  the  will  identify  The programmer c a n n o t e x p l i c i t l y  <if-action>  possible  which  The < s p e c i f i c - l i s t >  <specific-id>.  member o f t h e s e t .  39  structure  a specific  defined set  Language  o f some < a c t i o n > i  initiation  <for-action> The  System  repetitive a  different  change  this  <action>.  i s a control  s t r u c t u r e which  forinitiation  based  on  selects  some  one o f  conditional  expression. <if-action> If t h e n  the  indicated  <condition>  i s initiated;  present, The read  ::= i f < c o n d i t i o n > t h e n  <action> f e l s e : < a c t i o n > ] f i  i s true,  otherwise the  <action>  t h e <action> following  following e l s e ,  i f  i s initiated., <input-action>  f r o m some f i l e  <input-action> <file-name> <utterance>s  causes  or device.  ::= i n p u t  a s e r i e s o f <utterance>s I t s syntax i s :  [<file-name>]  i s t h e name o f a f i l e which  are i n i t i a t e d .  operating-system-dependent, system-dependent  value..  t o be  which c o n t a i n s a c o l l e c t i o n o f The s y n t a x o f < f i l e - n a m e > i s  and i t d e f a u l t s t o  some  operating-  T h e < i n p u t - a c t i o n > i s most u s e f u l f o r  Chapter  III.  specifying The and  The  D e b u g g i n g System L a n g u a g e  libraries  of canned debugging  <guit-action>  causes  procedures.  t h e d e b u g g i n g s y s t e m t o be  c o n t r o l r e t u r n e d to the o p e r a t i n g system.  <guit-action>  ::=  If  the  present,  The  <message>  <reference-action>  different  from  the  If  is  indicated,  to  specifics  <reference-action> without default  an  interactive The  request  saved  by  it  is  point  can  e n v i r o n m e n t has  restore  s a v i n g  that  clause  specifying action>. dependent.  a The  of  to  disambiguate  until  the  i s initiated.  (i.e.,  next  r e f e r e n c e :  the reference point to revert  mode was  a  used  generics  to  entered  most  recently).  r e e s t a b l i s h e s an  environment which  been named and  <file-name>]  [ s a v i n g  saved  Crestore-action>  <save-action> syntax  was  <save-action>.  in  a  file,  e n v i r o n m e n t u s i n g the < r e s t o r e - a c t i o n > . the  the  t o t h e r e f e r e n c e p o i n t when t h e  < r e s t o r e - a c t i o n > : : = r e s t o r e :<file-narae> <save-action> ::= s a v e < f i l e - n a m e > Once an  which  r<variable> ]  or <execute-action>  <restore-action>  previously  and  argument c a u s e s  reference  debugging s e s s i o n .  default. r e f e r e n c e  <variable>  display  establishes a reference point  ::=  references  I t s syntax i s :  i s d i s p l a y e d on t h e o u t p u t  <reference-action> a  exited  q u i t [<message> ]  device before termination of the  is  40  of  immediately <file-name>  is  a  shorthand  B&IDE The for  preceding a X r e s t o r e is  operating-system-  Chapter  III.  The  The Debugging  <set-action>  debugging  a user  value  changes t h e v a l u e  ::= set < v a r i a b l e >  program o r d e b u g g i n g  specific  indicated  The point  is  the  designated, i t s I f the <variable>  must h a v e been d e c l a r e d  with a  v a r i a b l e i s made t o r e f e r e n c e t h e  by t h e < e x p r e s s i o n > .  c h a n g e by s k i p p i n g e x e c u t i o n  of t h e remainder  o f some  of code.  <skip-action>  ::=  <skip-action>  execution  desires  errors.  skip [ < s e g m e n t - g e n e r i c > ] affords the  o f a segment  especially  but  <variable>  <sfcip-action> causes t h e v a l u e of t h e d e f a u l t r e f e r e n c e  to  segment  program o r  to < e x p r e s s i o n >  a < s p e c i f i c - i d > (which  <specific-declaration>),  is  o f some u s e r  i s changed t o t h a t o f t h e <expression>.  designates  The  41  variable.  <set-action> If  System Language  user  opportunity  of the c u r r e n t l y suspended  u s e f u l when t h e u s e r to  the  continue  discovers  execution  a  to  program. program  abort This error,  to discover other possible  F o r example.  Skip P R O C E D U R E , execute. will  cause  procedure  which  suspended. exit  will  program The  the  user's  called  Any  program  to  resume  execution  t h e one i n which e x e c u t i o n  d e f e r r e d a c t i o n s a s s o c i a t e d with  be i n i t i a t e d  a s i f t h e segment  was  i n the  originally  t h e segment's  terminated  by  normal  execution. <system-action>  temporarily  allows  suspended to allow  the  control  execution  o f RAIDE t o be  t o pass t o t h e  operating  Chapter  III.  The D e b u g g i n g  System  Language  42  system. <system-action>  ;:=  system  RAIDE w i l l  subsequently  prior  initiation  to  operating if  system  f<system-command>]  be r e e n t e r e d w i t h t h e e n v i r o n m e n t of  the  <system-actionX  a l l o w s such  a facility,  If  the  p r e s e n t , i s t h e s i n g l e command e x e c u t e d  i t had  the  host  <system-command>,  b e f o r e RAIDE i s a u t o -  m a t i c a l l y reentered.,. The  <while-action>  allows repetitive <while-action> Until  initiation  All  will of  another o f some  <condition>  be i n i t i a t e d the  control  do  becomes  false,  actions  of  RAIDE  The o m i s s i o n o f a t r a c e  primitive  virtually  a l l p r e v i o u s debugging  systems,  mented  using  the  Examples o f t r a c i n g  the  specified  repeatedly.  primitive  primitive  which  <action>  outlined.  Dispel a trace  structure  <action>.  ::= w h i l e < c o n d i t i o n >  the indicated  <action>  i s  i s unnecessary:  <when-clause>  debugging  procedures  action,  now  been  present  in  s h o u l d be n o t e d .  In  tracing  and  have  the  can  be  imple-  <dispIay-action>.  are given i n  the  next  section. C.  Examples T h i s s e c t i o n c o n t a i n s numerous examples o f RAIDE  reguests  coded  in  the  debugging  system  language  Dispel.  e x a m p l e s a r e d e s i g n e d t o show t h e e x t e n t and power o f well be  as  t o demonstrate  assumed t h a t  Dispel.  debugging  RAIDE  The as  I n t h e e x a m p l e s below, i t w i l l  the host source language  i s b l o c k - s t r u c t u r e d and  Chapter I I I . contains  the  and  data-generics  the  Furthermore, system  43  The D e b u g g i n g System L a n g u a g e segment-generics  the  functions  VARIABLE,  existence i s  PROCEDURE, BLOCK, and STATEMENT  of  assumed.  PARAMETER, three They  and  segment-generic are  when  the  function  generic-related supplied  block,  or  statement  i s invoked.  functions are  f o r each  language  The  remainder  of  the  interfaced  to  functions  i n Appendix  this  specifics  indica-  recently  active  generics,  language-dependent  l a n g u a g e ^ i n d e p e n d e n t RAIDE s y s t e m n e e d e d below, and a r e l i s t e d  most  Like  related  CURRENT_PROCEDURE,  CURRENT_BLOCK, and CURRENT_STATEMENT, y i e l d i n g t i n g t h e procedure,  CONSTANT.  and  the are  these  must  system.  be The  described  as  A.  section contains  examples i n t h i s  form: a d e s c r i p t i o n o f t h e debugging reguest  d e s i r e d , the D i s p e l  code  an  e x p l a n a t i o n and  o f t h e v a r i a b l e *var* o f ' n*.  i n t h e procedure  corresponding  comments c o n c e r n i n g 1.  set  program  2.  reguest,  and  v a r i n f o o t o n.  suspended  "in  the  t h e code. ,  Change the value •foo' to the value  T h i s command  the  to  i s given  when e x e c u t i o n  of  the  program  and RAIDE i s i n t h e i n t e r a c t i v e r e g u e s t  has been i n t e r r u p t e d d u r i n g e x e c u t i o n  reference  point  is  *foo*),  then  the  of  has  been  mode.. I f t h e *foo'  (i.e.,  segment-qualifier  foo" i s optional since i t w i l l default. L i s t t h e names and c u r r e n t v a l u e s ( i f any) o f a l l v a r i a b l e s declared i n the c u r r e n t l y executing procedure which have not been a c c e s s e d more t h a n ' n' t i m e s .  Chapter  III.  44  The Debugging System Language  f o r e a c h VARIABLE i n C U £ R E N T _ P R O C E D U R E -> w a r ao i f (#ACCESSES (var) < n) t h e n d i s p l a y L I N E , v a r , " = ", VALUE(var) f i .  #ACCESSES  is  a  system  function  yielding  t h e number o f  w h i c h t h e i n d i c a t e d d a t a - s p e c i f i c h a s been a c c e s s e d program  execution.  following display  LINE i s a s y s t e m  t o be d i s p l a y e d s t a r t i n g device.  Notice  times  during  function causing  on a new l i n e o f  total  the items  the  output  that d i s p l a y i n g the s p e c i f i c v a r i a b l e  • v a r * c a u s e s t h e s o u r c e - l e v e l name o f t h e v a r i a b l e i n d i c a t e d the is  specific obtained  t o be p r i n t e d .  by t h e VALUE  uninitialized 3.  The c u r r e n t  system  value  function.,  o f some  The  v a r i a b l e i s d i s p l a y e d as a guestion  by  specific  value  of  an  mark.  Set a breakpoint when statement •m» i n the e x e c u t i n g p r o c e d u r e has been e x e c u t e d n * t i m e s .  currently  1  a f t e r  i f  STATEMENT:m i n CURRENT_PROCEDURE (SENTRIES (m) = n)  then  b e g i n  c a n c e l break  ;  "n-th execution  of statement  m"  end f i .  This  is  statement  an example o f a d e f e r r e d a c t i o n . *m» i n t h e c u r r e n t l y e x e c u t i n g  a system f u n c t i o n which segment-specific prefix the  generic  type  of  during  ' m'  may  be  •m« i s b e i n g  the i n d i c a t e d  program e x e c u t i o n .  ambiguous.  referenced.  may  It  after  #ENTRIES i s  i s appended t o • m* i n t h e f i r s t  VARIABLE o r PROCEDURE, and t h e s y s t e m which  procedure.  y i e l d s t h e number o f t i m e s  has been e n t e r e d  "STATEMENT:"  I t sets a trap  line  could  The since be  a  be u n a b l e t o d e t e r m i n e  Chapter 4.  III.  The Debugging  List the procedure  f o r . e a c h d i s p l a y  source Vfoo».  System L a n g u a g e  for  statements  numbers segments o t h e r t h a n function  particular 5.  which  subrange  here  unless  STATEMENTS  TAB  thru  *n'  of  the  do  the  host  language  ( e . g . , BLOCKS).  RANGE i s  y i e l d s a generic value i d e n t i f y i n g  some  o f another g e n e r i c value.  L i s t t h e names of a l l p r o c e d u r e s d e c l a r e d i n t h e •main* w h i c h have n o t b e e n e x e c u t e d more t h a n • n  f o r e a c h PROCEDURE i n main -> p r o c d o i f (#ENTRIES(proc) < n) then d i s p l a y LINE, #ENTRIES ( p r o c ) , f  * m*  STATEMENT i n RANGE(foo,m,n) ~> stmt LINE, VALUE(stmt).  "STATEMENT:" i s n o t n e c e s s a r y  a system  45  TAB (10),  procedure times.  1  proc  i .  i s a system  displayed  function  a t the indicated  Since the s p e c i f i c which  which  are  'proc  declared  1  t h e items f o l l o w i n g  to  be  c o l u m n on t h e o u t p u t d i s p l a y d e v i c e .  will  indicate  i n the procedure  a p p l i e s o n l y t o the t o p - l e v e l 6.  causes  only  those  procedures  •main*, t h e r e g u e s t above  p r o c e d u r e s i n 'main*.  Extend the preceding example t o produce a complete procedure execution profile and i n d e n t the output t o r e f l e c t t h e l o g i c a l s t r u c t u r e o f t h e program. execution_profile  d e f i n e  integer  for  each  ( s p e c i f i c  major_proc  raajor_proc  -> p r o c d o  ;  as  indent)  PROCEDURE  i n  b e g i n  LINE, T A B ( i n d e n t ) , TAB ( i n d e n t + 1 0 ) , p r o c ;  d i s p l a y  c a l l  #ENTRIES(proc),  execution_profile(proc,indent+5)  end.  c a l l  execution_profile(main,0).  This i s the f i r s t in  p a r t i c u l a r how  example u s i n g a d e b u g g i n g the procedure  i s called  procedure.  Notice  r e c u r s i v e l y t o handle  Chapter I I I . the  logical  the  T h e Debugging  nesting  utility  System  o f t h e program.•,  of  debugging  46  Language This  variables  example  demonstrates  (viz.,  »major_proc«,  • i n d e n t * , and • p r o c ' ) . 7.  Brite a debugging procedure t o t r a c e a l l calls of a p a r t i c u l a r subroutine within a procedure, indicating the location o f t h e c a l l , t h e name o f t h e s u b r o u t i n e c a l l e d , and t h e names and v a l u e s o f a l l o f i t s f o r m a l p a r a m e t e r s .  d e f i n e b e g i n  trace_proc_calls  ( s p e c i f i c  subr)  as  subr_entry_trace: before s u b r ENTRY I d i s p l a y , L I N E , " T r a c e a t s t a t e m e n t ", CUfiRENT^STATEMENT, " i n ", CURE ENT_PJBOCED ORE ; subr_entry_trace; a f t e r s u b r ENTRY b e g i n d i s p l a y  L I N E , CURRENT_PROCEDURE,  " entered with the f o l l o w i n g parameters;" ; f o r e a c h PARAMETER i n CURRENT_PROCEDURE -> parm d o d i s p l a y LINE, TAB(10), parm, " = ", VALUE(parm) end end.  This  example  utility The  t o merit  definition  initiated subr  in  inclusion  establishes the  another  procedure  w i t h i n a debugging  environment o f the c a l l i n g  subroutine  s u b r ENTRY).,  sufficient  procedure l i b r a r y . one  which  procedure  i n t h e environment  i s  (before  o f the  Notice  how t h e p r o c e d u r e  many t r a p s , a l l o f which  a r e i d e n t i f i e d by  ( a f t e r  capable of s e t t i n g  of  two d e f e r r e d a c t i o n s ,  ENTRY) and one w h i c h i s i n i t i a t e d  called is  demonstrates  o n l y one l a b e l .  8.  Disable a l l of example.  c a n c e l  This  the  tracing  described  in  the  preceding  subr_entry_trace. one  procedure  c a n c e l  action  removes  •trace_proc_calls'.  a l l o f t h e t r a p s s e t by t h e  Chapter  9.  III.  The D e b u g g i n g  S y s t e m Language  Write a debugging procedure to GOTO-less s u b r o u t i n e [ F o u l 7 5 ] .  47  produce  a DO-trace  of a  d o _ t r a c e ( s p e c i f i c subr) a s f o r e a c h BLOCK i n s u b r -> b l o c k d o do_block_trace: a f t e r b l o c k ENTRY  d e f i n e  "  d i s p l a y  CURRENT_STATEMENT.  In a GOTO-less s u b r o u t i n e , t r a c i n g statement tion  i s  produces lost  guaranteed  since arbitrary simply which 10.  block rather  a more compact t r a c e .  because,  that  each  each  once  the  No e s s e n t i a l  block  statement i n that  t h e number o f t h e f i r s t  is  ,  i t i s  be e x e c u t e d  do_trace*  statement  each  informa-  entered,  block w i l l  GOTOs a r e n o t p e r m i t t e d .  printing  than  works  i n each  by  block  i s entered. Extend the preceding example to t r a c e a l l b l o c k s o f a l l s u b r o u t i n e s d e c l a r e d w i t h i n some u s e r p r o c e d u r e .  d e f i n e  for  d o _ t r a c e _ a l l ( s p e c i f i c proc) a s e a c h PROCEDURE i n p r o c -> s u b r d o  b e g i n  do_proc_trace: a f t e r s u b r ENTRY d i s p l a y .LINE, C U R R E N T _ P R O C E D 0 R E ,  c a l l  «:» ;  do_trace(subr)  end.  Since statement is  n u m b e r i n g may be done a t t h e p r o c e d u r e  necessary to i d e n t i f y  before l i s t i n g  11.  statement  D e f i n e a mechanism d e p t h o f an a c t i v e  d e f i n e  for  the  name  of  numbers w i t h i n  the that  begin  each  procedure  BLOCK i n s u b r -> b l o c k d o  a s  entered  procedure.  f o r determining dynamically the program b l o c k [ M a t h 7 5 ] .  block_depth_eounter ( s p e c i f i c proc) e a c h PROCEDURE i n p r o c -> s u b r d o  for  level, i t  nesting  Chapter  III.  The D e b u g g i n g  System Language  48  b e g i n  block_depth_level: a f t e r b l o c k ENTHY set b l o c k_ l e ve 1  t o  b 1 ock_. 1 e ve 1 + 1 ;  block_depth_ l e v e l : b l o c k EXIT s e t block_level t o block_level  b e f o r e end  - 1  ;  c a l l  block_depth_counter(subr)  end.  %  !  Define  and i n i t i a l i z e block_level. b l o c k ^ l e v e l t o 0.  the global  block l e v e l  counter.  %  i n t e g e r  set  Invoking routine  'block_depth_counter* a s an argument w i l l  n i n g and e n d i n g purpose o f these variable invoked, the is  o f each  possible  dynamic  to  depth  i s t o increment  Thus  once  of 'block^level*  program  various  and  during  program.  The  decrement  the  execution Bith  see  i s  indicates  t h i s mechanism i t  breakpoints  execution;  main  begin-  •block_depth_counter'  o f t h e CURBENT_BLOCK.  establish of  breakpoints a t the  block of the u s e r ' s e n t i r e  »block_level•,  n e s t i n g depth  t h e name o f t h e u s e r ' s  establish  breakpoints  the value  with  the  based  on  the  following  two  examples.  12.  Using t h e mechanism described i n t h e p r e c e d i n g example, p r o d u c e a D O - t r a c e o f a program o n l y when t h e b l o c k n e s t i n g l e v e l i s g r e a t e r t h a n some c o n s t a n t 'n'.  when  ( b l o c k l e v e l > n) CURRENT,BLOCK.  d i s p l a y  The  <when-clause> w i l l  'block_level' ending  be  evaluated  i s c h a n g e d , which  o f each b l o c k .  each  occurs both  Therefore, tracing  e a c h b l o c k , a t e n t r y and e x i t .  time  the  value  of  a t t h e b e g i n n i n g and  will  occur  twice  for  Chapter I I I . 13.  T h e D e b u g g i n g System  Language  49  W r i t e a d e b u g g i n g p r o c e d u r e t o b r e a k on t h e s i v e c a l l o f some u s e r p r o c e d u r e .  'n^th  recur-  d e f i n e r e c u r s i o n _ b r e a k ( s p e c i f i c proc ; i n t e g e r n) a s begin recurs ion_break_la bei: a f t e r p r o c ENTRY set r e c u r s i o n _ l e v e l to r e c u r s i o n _ l e v e l + 1 ; recursion_break_label: before proc EXIT set r e c u r s i o n _ l e v e l t o r e c u r s i o n _ l e v e l recursion_break_labei: when r e c u r s i o n _ l e v e i n begin cancel recursion_break_label set r e c u r s i o n _ l e v e l t o 0 ; break end end.  - 1 ;  ;  % D e f i n e and i n i t i a l i z e t h e g l o b a l r e c u r s i o n integer r e c u r s i o n _ l e v e l . s e t r e c u r s i o n _ l e v e l t o 0. The  action  •foo* 14.  "call  i s entered  counter. %  r e c u r s i o n _ b r e a k ( f o o , 10.) " c a u s e s recursively  f o r the tenth  a  break  when  time.  Write a debugging procedure t o produce the . A l g o l - 9 tem dump [ S i t e 71: 125-127 ].  postmor-  d e f i n e postmortem as begin s p e c i f i c segment, c a l l e r ; d i s p l a y PAGE, "=> Postmortem dump o f a c t i v e s e g m e n t s " ; s e t segment t o C 0 R R E N T _ B L O C K ; !  while DEFINED(segment) do begin d i s p l a y LINE(2) , "=> Segment name; ", segment, " v a l u e o f l o c a l v a r i a b l e s : " , LINE ; f o r each PARAMETER i n segment -> parm do c a l l p r i n t _ p a r a m e t e r _ v a l u e (parmj: ; f o r each VARIABLE i n segment -> v a r do c a l l p r i n t _ v a r i a b l e _ v a l u e (var) s e t c a l l e r t o CALLER (segment) ;  LINE(2),  Chapter I I I . if t  The  Debugging  f i  50  activated  from  ;  end  segment t o  caller  ;  L I N E ( 2 ) , "=>  d i s p l a y end.  Unlike  the  cerned  primarily  program.  o f postmortem  the  i t i s possible The s y s t e m  variable indicated otherwise.  segment  a  system  which  called  debugging  handle the s p e c i a l  Any  program,  debugging the  may  which  have been  effect,  have in  system current  wish  and  to  know  defined,  what  the  system of  must  yields  which  yields a specific  been which  parameters, based  the  The  false  accepts  procedure  •print_parameter_value* defined the  elsewhere.  Alqol-W  on t h e i r  provide  system  a  They  translator  attributes.  mechanism  itself.  For  for  example,  t h e names o f a l l d e b u g g i n g what  breakpoints  the v a l u e of the c u r r e n t  I n RAIDE, t h e s e r e g u e s t s a r e f a c i l i t a t e d  a  indicating  s t a t e o f not o n l y t h e e x e c u t i n g  b u t of the debugging  user  function  procedures  formats  v a r i a b l e s and  interrogating  execution  t h e argument s p e c i f i c .  *print_variable_value*  displays  appropriate  by t h e argument h a s a v a l u e and is  of  DEFINED y i e l d s a t r u e v a l u e i f t h e  as an a r g u m e n t and  a b o v e assumes two  and  i s con-  structure  t o t r a c e back t h r u  function  CALLER  segment-specific  execution  action  w h i l e  dump"  p r o c e d u r e s , ! •postmortem*  w i t h t h e dynamic  Using  functions,  End  p r e v i o u s debugging  program.  and  Language  DEFINED(caller) h e n d i s p l a y L I N E { 2 ) , segment, " was c a l l e r , ", n e a r c o o r d i n a t e CORHENT_STATEHENT i n c a l l e r  set  the  System  by  are  the  procedures  currently  reference  host  in  point i s .  introducing  system  Chapter  III.  functions simply to  The D e b u g g i n g  to  extract  System  status  Language  information  and by v i e w i n g  a s a n o t h e r "host*' s o u r c e l a n g u a g e .  d i s p l a y  procedures examples  51  Thus, i t i s  segments o f D i s p e l p r o c e d u r e s and t o w r i t e which a f f e c t  to follow,  segment-generics  other  i t will  COMMAND  debugging  ACTION  possible debugging  procedures.  be assumed t h a t  and  Dispel  and  In  the  Dispel contains the the  data-generics  VARIABLE and PROCEDURE.  15.  Write a debugging procedure to print a c t i o n s on t h e d e f e r r e d a c t i o n l i s t .  define-print_deferred_actions  the  names  of a l l  as  b e g i n  i n t e g e r counter ; s p e c i f i c , deferred_action  set set  counter t o 1 ; deferred_action d i s p l a y LINE ;  ;  t o DEFERRED_ACTION_LIST(counter)  while,DEFINED(deferred_action)  ;  do  b e g i n d i s p l a y  d e f e r r e d _ a c t i o n , SPACE (3) ; c o u n t e r t o counter••• 1 ; d e f e r r e d _ a c t i o n t o DEFERRED_ACTION_LIST(counter)  set set end end.  This access  example  t h e system  the l a b e l s associated  actions. label  uses  Each l a b e l assigned  was a u s e r action  of  with  each o f the c u r r e n t l y  i s e i t h e r t h e one s p e c i f i e d ,  to  DEFERRED_ACTION_LIST  f u n c t i o n DEFERRED_ACTION_LIST  i t returns  program v a r i a b l e .  by  the a  system.  segmehtrspecific  procedure t o 'cancel_deferred_actions'  to  a  deferred  or t h e d e f a u l t Notice just  By c h a n g i n g t h e p r i n c i p a l  »print_deferred_actions'  to  c a n c e l ,  that  as i f i t d i s p l a y  a debugging  c a n be d e f i n e d .  Chapter I I I . 16.  The Debugging  System  Write a debugging procedure debugging p r o c e d u r e .  d e f i n e  for d i  will  the action  cause  list  t h e s o u r c e o f some  a s  print_debug_proc(print„debug_proc)"  " c a l l  f o r  the  *print_debug_proc' D.  to  p r i n t _ d e b u g _ p r o c { s p e c i f i c proc) e a c h ACTION i n p r o c -> a c t i o n d o s p l a y LINE, V A L U E ( a c t i o n ) .  Initiating  52  Language  action  which  constitutes  the  body  of  t o be p r i n t e d .  Discussion The  "How are  purpose  of  this  section  w e l l does D i s p e l f u l f i l l  i s t o answer two g u e s t i o n s :  i t s design  criteria?"  and  "What  i t s s h o r t c o m i n g s a n d how c a n i t be i m p r o v e d ? " . The  following  shows  how  each  o f the design  c r i t e r i a of  Table VII i s f u l f i l l e d : 1.  That  similarity each  Dispel  i s  to other  <utterance>  interactive-oriented  i n t e r a c t i v e command l a n g u a g e s . and  <action>  terminated  by t h e f u l l - s t o p  initiates  immediate  Altho the control the  flavor  used  primarily  is  2. the  unlikely  of  (.).  incremental  i n debugging  with The  f o r  and  F o r example,  a keyword full-stop  execution  (e.g.,  a batch-oriented  of  and i s symbol  the utterance. give  while)  Dispel  language, these c o n s t r u c t s a r e  subroutines,  which  the o r d i n a r y user  online.  The s e t o f p r i m i t i v e  primitives.  begins  symbol  structures  to define  control  i s s u p p o r t e d by i t s  structure  Dispel  <action>s i s s m a l l .  <action>s,  Furthermore, there  isa  there  are  one-to-one  only  Excluding thirteen  correspondence  Chapter  III.  53  T h e D e b u g g i n g System L a n g u a g e  between t h e s e < a c t i o n > s and t h e p r i m i t i v e RAIDE 3.  The b a s i c  lated  into  c o n c e p t s o f RAIDE  Dispel,  This  (cf.. Section  i s evidenced  e n c e between t h e s y n t a c t i c e n t i t i e s basic  system  <specific>,  concepts  clause>  of  <action>  and t h e RAIDE r e f e r e n c e  4.  pages.  The  chart  the  and  a  a  RAIDE  there  specific; event;  that  this  and  the  the  <when-  and t h e r e f e r e n c e  point).  claim  Dispel must  specifiable i n  a r e no " s e m a n t i c "  i s a v a r i a b l e i n any  Ultimately,  language  o f Appendix B a t t e s t s t o the u n i f o r m i t y of  Further,  claim  correspond-  v a r i a b l e s , the construct  The complete s y n t a x i s f o r m a l l y  <variable> 5.  command  The s y n t a x  Dispel. few  a  of  of  II.B) a r e a s s i m i -  by t h e c l o s e  <e.g., s p e c i f i c  and t h e RAIDE c o n c e p t  actions.  just  a  gualifications; a  context. i s  simple  t o use i s s u b j e c t i v e .  be  substantiated  by  each  user  individually. 6.  The l a n g u a g e h a s been d e s i g n e d t o be  respects  and,  Pronouncing it.  therefore,  a debugging  easy  to  command s h o u l d  , ,  English-like  read  and  be t h e same a s  , ,  i n many  understand.. explaining  F o r example, t h e < u t t e r a n c e > :  b e f o r e e a c h STATEHENT i n f o o display CURRENT_STATEMENT, has  the  pronunciation:  "Before executing each statement d i s p l a y , i t s s t a t e m e n t number." This  in itself  i s an e x p l a n a t i o n  in  the  subroutine  o f the <utterance>.  '^ag*,  Chapter I I I . 7.  The Debugging S y s t e m L a n g u a g e  The D i s p e l s y n t a x d i s c o u r a g e s v o l u m i n o u s o u t p u t by  ing  explicit  in  the smallest  amount o f i n f o r m a t i o n . main  displays  variables  only  ->  F o r example:  do  var  VALUE(var).  the  which  are  declared  •main*, n o t a l l v a r i a b l e s a c c e s s i b l e t o i t . user  rather 8.  variables  Extendability  i s afforded  interfacer.. evidence  The numerous  this.  generics  for a  actions  are  is  of  the  and  definitions  preceding  the  "sufficient".  Dispel i s believed  Specifically:  with  I t would be c o n v e n i e n t  Dispel*s  i t s use  the proper RAIDE  procedures  to include'initialization  an e x t e n s i o n  debugging  as p a r t o f  The s e q u e n c e :  0.  s o common a s t o s u g g e s t  good  h a s shown where i t c a n be  foobar.  foobar t o  of  section  primitive  t o be a r e a s o n a b l y  d e c l a r a t i o n s o f debugging v a r i a b l e s .  i n t e g e r  the  extendability.  improved.  set  the d e f i n i t i o n of  t h e c o n t r o l o f the language  language  mathematically  experience  the  thru  thru  procedure,  "displayALL.".  the interfacer i d e n t i f i e s  particular  language,  1.  under  examples  Provided  adequate  Altho  entities  debugging  to  i n Dispel  l o c a l l y to  To g e t a d i s p l a y o f  f  a recursive  p r o c e d u r e s by t h e u s e r and  language-dependent  provide  requires  than extending the d i s p l a y a c t i o n  debugging  requir-  s p e c i f i c a t i o n s and a s s u m i n g d e f a u l t s w h i c h r e s u l t  f o r e a c h VARIABLE i n d i s p l a y var, " =  all  54  suck a s :  Chapter I I I .  problem  debugging d e f i n e  is  foo  doing  ( i n t e g e r  . this  is  maintaining  i n i t i a l l y 0 )  bar  uniformity  with  The p h r a s e :  a s  t o be a v o i d e d .  I t would  without  55  Language  procedure parameter d e c l a r a t i o n s .  clearly  2.  with  System  0.  foobar i n i t i a l l y  i n t e g e r  The  The Debugging  be c o n v e n i e n t t o l a b e l  repeating  the label.  a group of d e f e r r e d  actions  The seguence:  < l a b e l - i d > : b e f o r e ... < a c t i o n > ; < l a b e l - i d > : a f t e r ... < a c t i o n > is  common  in  debugging  preceding section). actions  them  easier..  on  example  7 of the  several  deferred  An e x t e n s i o n  such a s :  ... < a c t i o n > ;  (before a f t e r  (e.g.,  H a v i n g t h e same l a b e l  makes c a n c e l i n g  <label-id>:  procedures  ... <action>.)  may be c a l l e d f o r . 3.  Debugging  (i.e.,  there  currently built-in of  procedures  should  be d e b u g g i n g  impossible system  should  to  function  some s u b r o u t i n e .  define  be  allowed t o r e t u r n  functions). a  F o r example,  procedure  CALLER w h i c h  values i t i s  similar  t o the  returns the *n -th  caller  t  The s t r a i g h t f o r w a r d  definition  would  be as  follows. callern ( l e v e l < 1)  d e f i n e  i f  proc ; i n t e g e r  level)  then  r e t u r n  CALLER(proc)  else:  r e t u r n  c a l l e r n (CALLER (proc) , l e v e l - 1 ) .  4. on  ( s p e c i f i c  The c u r r e n t global  structure of Dispel  debugging  variables.  : s p e c i f i c  p l a c e s t o o much As an example,  a s  dependence  t h e procedure  Chapter  III.  The D e b u g g i n g  •block_depth_Gounter» global  variable  transparent  of  5.  in  some  problems.  of  other  action  only  i s to  the  user  know  possible  to  i s a global  variable,  not  'foo'  debugginq  a t times.  globally  deferred with  or  action the  labels.  procedure  This  c a n be  neither  since  label.  Clearly,  invocation  i t s definition.  o f debugging v a r i a b l e  likewise  t o have two  and ' b a r ' . both  c a n c e l  about  redefines  (example 7) t o t r a c e  subroutines  the  generally  Clearly,  l a b e l s known  s u c h l a b e l s s h o u l d be a s s o c i a t e d  could  need  i t  context?  of 'trace_proc_calls'  'subr_entry_trace'  addition  Altho  requires  F o r e x a m p l e , i t might be u s e f u l  done, b u t i t i s o n l y  debugqinq  section  and p r o c e d u r e names need t o be p r o t e c t e d  invocations calls  56  what i f t h e u s e r i n a d v e r t e n t l y  Having a l l deferred  creates  preceding  (who s h o u l d  •block_depth_counter*),  variable  the  'block_level•.  t o t h e user  'block_level»  System Language  This  pf  the  suggests the  Then t h e t r a c i n g  routine  be d e f i n e d a s :  d e f i n e  trace_proc_calls  ( s p e c i f i c  proc  ;  l a b e l  trace.label)  a s  • '* •  and 6.  invoked as  " c a l l  Debugging  t r a c e _ p r o c _ c a l l s ( f o o , f o o _ t r a c e ) "...  variables  can  currently  s p e c i f i c  and  i n t e g e r .  This  boolean  and  c h a r a c t e r  need t o be added.  more d e c l a r a t i o n debuqqinq  types,  variable  be o f o n l y  i s expressively  what  declaration.  may  be  limitinq;  But r a t h e r needed  variables  i s  at than a  least adding  typeless  F o r example, a g e n e r a l - p u r p o s e  procedure t o scan a p a r t i c u l a r user subroutine all  two t y p e s :  with a c e r t a i n value could  f o r t h e names  be d e f i n e d a s ;  of  Chapter  III.  The  Debugging System  Language  57  v a r i a b l e _ s c a n ( d e c l a r e proc, value) f o r e a c h VARIABLE i n p r o c -> v a r d o i f (var = value)  d e f i n e  then  d i s p l a y  Similarly,  a  actions could define  var.  debugging  procedure  be  as:  defined  ( d e c l a r e target,  super_set  as  which  "remembers"  a l l  set?  as  source)  set max_set_list_index t o max_set_list_index setset_targetslmax_set_list_index) t o target ; s e t s e t _ s o u r c e s (max_set__list_index) t o source ; s e t target t o source  b e g i n  +  1 ;  end.  Then p r o c e d u r e s t o p r i n t •set_sources'  is  value,  a  d i s p l a y  of  a v a r i a b l e , i t would be i t s name, t o be  to s e t ,  which  assumes t h a t  value.  Thus,  i f 'foo'  •set_targets•  and  more  for  p r i n t e d by the  natural default.  right-rhand  This  expression  i s a program v a r i a b l e w i t h  the  foo.  would d i s p l a y "10" then  added t o  choice  discarded  of  the  OFFENDER,  is which  identifying  the  action:  need  The  a system  when t h e  for  less at  returns  a of  function  f u n c t i o n NAME c o u l d  be  i s unfortunate;  l i b r a r y  confusing. least  segmentan  VALUE s y s t e m  v a r i a b l e ' s name i s d e s i r e d . .  keyword i n p u t  and  cause  "foo".  and  cases  more a c c u r a t e  There  deferred  be  r a t h e r than  handle those  The  would be 9.  values  10,  value  could  the  defined.  r a t h e r than  similar  yields  8.  be  When d i s p l a y i n g  7.  its  could  out  one  new  or  exception.,.  system f u n c t i o n ,  data-specific For  example,  value the  Chapter on  III.  T h e D e b u g g i n g System L a n g u a g e  58  OVERFLOW begin d i s p l a y " O v e r f l o w d e t e c t e d a t s t a t e m e n t ", CUSRENT_STATEMENT, " i n ", CURRENT.PROCEDURE, " V a r i a b l e ", OFFENDER, " has t h e v a l u e ", VALUE (OFFENDER) , LINE ; break , end.  pinpoints OFFENDER  precisely is  defined  exceptional condition.  the only  location when  of there  an  LINE,  overflow  i s  an  exception. outstanding  59 Chapter  The RAIDE  virtual  IV.  sharing  system  run  A b s t r a c t Machine).  i t s name,  i s  SPAM'S c o m p o s i t i o n  internal  aids  SPAM  The f i r s t  The c h a p t e r  and  an  outline  i s concluded  debugging  process  product tothe  of  this  T h i s i s f o l l o w e d by a machine, i t s  of i t s i n s t r u c t i o n  with a d i s c u s s i o n of  and  the  (Specialized  section  o f t h e m a j o r components o f t h e v i r t u a l  operation,  the  programs u s i n g  i s not o f concern  d e s c r i b e s SPAM's d e s i g n c r i t e r i a .  description  toire.  called  Machine  U n l i k e t h e o t h e r canned  u s e r , due t o i t s i m p e r c e p t i b i l i t y . chapter  Debugging  m a c h i n e oh w h i c h t r a n s l a t e d  debugging  Prodebugging  The V i r t u a l  reper-  how  SPAM  how w e l l i t meets i t s d e s i g n  criteria.  A. /*  Design  R e g r e t t a b l y , most programs a r e r e q u i r e d t o e x e c u t e w i t h a maximum o f speed and a minimum o f c a u t i o n ; i t i s s m a l l wonder, t h e r e f o r e , t h a t we c h a r a c t e r i z e t h e common r e s u l t as a " c r a s h " . — J o h n R. Ehrman, [ E h r m 7 2 : 2 0 ] * / The  program  primary  existing how  process  of  SPAM  [Ehrm 72,  is  to  provide the user's  the  machine  design  itself  speed  criteria.  hostile  to the  G l a s 68, P y l e 7 1 , Z e l k 71 ].  c o m p u t e r s have been d e s i g n e d  programs; e x e c u t i o n primary  purpose  w i t h a machine e n v i r o n m e n t t h a t i s n o t  debugging  for  Criteria  might  with l i t t l e aid in  and e f f i c i e n c y  have  Most  consideration  t h e debugging of always  been  the  Chapter  IV.  The V i r t u a l  Debugging  Machine  The d e s i g n o f SPAM i s i n f l u e n c e d several  recent  virtual  machines  g e n e r a t i o n [ B o u l 72, Pask  73, S o r t  machine  debugging  oriented  high-level  machines  Likewise,  SPAM  languages o f chapters toward SPAM be  toward  directed  i s oriented  the  that  Algol  the  used  only  system.  This  may a t f i r s t  design  criteria  of  on  attribute  A l l of these are languages.  stated  procedural previous  i s not i n h e r e n t l y  directed  Nevertheless,  r u n on  since  SPAM,  the  the e n t i r e  virtual  debugging  t o be a s e v e r e r e s t r i c t i o n  and  3, w h i c h  state that  Nonetheless, the c l a s s  and d i v e r s e .  A  1  debugging  any and a l l l a n g u a g e s w i t h i n " l a n g u a g e - i n dependent".  implementation equivalent  of  t h e system  implementation  SPAM c o u l d ,  a  truly  the  be  remembered  o f RAIDE. health  i n fact,  which  i s  t h i s c l a s s deserves the  Until  universal  be l e s s t h a n t o t a l l y  must  to  of  of Algol-like  system  the  computer  o f t h e p r o v e r b i a l UNCOL), a l l s o f t w a r e  of necessity  vital  virtual  in  s c o p e of  the  1  code  l a n g u a g e s and s i n c e RAIDE c a n  which  appear  programs.  languages i s large  It  i s  in  previous  Algol-like  of languages.  limits  aid  be s o u r c e l a n g u a g e i n d e p e n d e n t and u s a b l e on m u l t i l i n g u a l  collections  usable  69 ].  f Orga 7 3 ] ,  block-structured,  system  t o debug programs  effectively  should  toward  to A l g o l - l i k e  machine  system  [Pull  B6700 to  7 2 ] , and a  toward  debugging  restricted  the  designed  family. , I t  one p a r t i c u l a r c l a s s i s  by  60  design (the  and  machine  systems  will  language-independent.,  that  SPAM  i s a tool  used i n t h e  As s u c h , t h e e x i s t e n c e o f SPAM i s n o t and  well-being  be r e p l a c e d  of t h e debugging  by some o t h e r machine,  system. such  as  Chapter the  IV.  IBM  first, ity  The  Virtual  Debugging Machine  System/360/370.  the  of  use  the  of a  This  virtual  system.  To  machine.  and  Also,  RAIDE since  need  the  much o f  error detection  reduces  needs not  the  to  as  ated,  run  it  not  likely  rewriting  or  i s a nontrivial  system  resource,  /*  other  modifying  lators  Machine  be  possible  e r r o r s and  implementations  a r e two  First,  generation  B,  will  be  portabil-  machine,  only  the  over  machine  oriented  is  should  done a t  the  burden  of b o t h and  need n o t  the SPAM  to the  be  toward  less  machine  since level.  RAIDE,  any  new  which  translators  generate as  much  run-  code. there  will  is  facilitate  reasons,  bootstraped  much e r r o r c h e c k i n g ,  approach.  debugging  be  RAIDE, s i n c e t h e y  Nevertheless,  f o r two  remodified;  implementation  time e r r o r checking  machine  done  t o t a l implementation e f f o r t  perform  interfaced  be  virtual  the  This  machine s h o u l d  not  debugging, the  not  move RAIDE t o a n o t h e r r e a l  l a n g u a g e t r a n s l a t o r s need interpreter  was  61  the  disadvantages  since  the  the  virtual  code g e n e r a t e d  during  d i f f e r e n t from t h a t n o r m a l l y to  use  RAIDE  language  RAIDE i s o r i e n t e d  to track  translator  code g e n e r a t i o n  undertaking.  than c u r r e n t  to  But  as  gener-  down code  bugs.  phase o f most  Also, trans-  a translator writing  more t o w a r d  future  translator  ones.  Architecture  spam, Spam, SPAM, SPAM, L o v e l y Spam, W o n d e r f u l Spam! — M o n t y Python's F l y i n g C i r c u s The  IV-1.  a  basic  a r c h i t e c t u r e o f SPAM  There are  eight  is  illustrated  major components i n the  by  machine:  */  Figure  C h a p t e r IV.  The V i r t u a l  Debugging  Machine  62  i r  -  .  :  ,  ,  r  I  I — !  I I I  I  I j bounds t a b l e t  type  table  j I 1  I  figure  IV-1.  C_  Basic  Architecture  -  :  I  ;  o f SPAM  I | I 1  Chapter 1.  IV.. The V i r t u a l  Debugging Machine  The t y p e t a b l e c o n t a i n s  variables,  the  arguments  y i e l d e d by f u n c t i o n s .  carry  out  complete  information concerning of procedures  values  63 the types of  and f u n c t i o n s , a n d t h e  This information  run-time type-checking  i s  necessary  of v a r i a b l e a s s i g n -  ments, and p r o c e d u r e and f u n c t i o n i n v o c a t i o n s .  The  is  (  s u p p l i e d t o SPAM  2.  The bounds t a b l e c o n t a i n s  arrays, Pascal) in  and  the  Sue).  This  be  information  modified  contains  an i n s t r u c t i o n  of executable  purpose i s c a l l e d segments  of  (e.g.,  supplied  by t h e l a n g u a g e  segment. is  and  entries and  segment  of  1..10 i n  white,  blue)  t o c a r r y out run-time  T h e bounds t a b l e i s s u p p l i e d  SPAM machine c o d e , which  together  SPAM s e g m e n t s a r e procedures,  by some much  loops,  descriptors.  The  A  common  like  the  and a s s i g n m e n t the code  segment area  i s  translators.  the  the complete  w i t h i n one  cannot  The b a s i c u n i t o f m a c h i n e c o d e i s  t h e segment c o n t r o l s t a c k i d e n t i f y  reference  Since  contained  (red,  A l l r e f e r e n c e s t o c o d e a r e made t h r u  stack  segment  (e.g.,  c o n s i s t s of one o r more s y l l a b l e s .  a segment.  control  The  i s necessary  machine code r e l a t e d  RAIDE  statements).  4.  i n t e g e r subranges  only  during execution.  a sellable;  table  translators.  The c o d e a r e a  unit  of  type  t h e l o w e r and u p p e r bounds o f a l l  of v a r i a b l e values.  the language  3.  bounds  translators.  and s c a l a r v a r i a b l e s ( e . g . , c o l o r =  range checking by  by t h e l a n g u a g e  to  environment  accessible  s t a t e o f an e x e c u t i n g  segment  control  stack  a code  by  that  code segment  entry,  a  new  Chapter  IV.,  segment  The  Virtual  i s executed  Likewise, stack.  by  segment e x i t The  Debugging Machine merely  pushing  results  currently  The  the  entries  active  range of  segment. stack 6.  top entry  pointer  dxnamic  during  the  tors.  being  procedures  which  an  into  The by  last the  valid  i t .  of  and  The  blocks item the  scope stack e n t r y  f o r those  the  t o by  the  the beginning by  of  each  code  the  scope  Altho  user  program.  within  within  the  refers  e n t r y of the  dynamic s t o r a g e  stack  are  the  language  level  stack;  into  the  items  a  of  the  nesting  of  level  The  The  order  order  the l e v e l i d e n t i f i e s  dynamic  dynamic s t o r a g e pointer  part  by  program.  i s desired.  is  transla-  accessed  to the l o g i c a l source  which  data  i n d i c a t e s the l e x i c  dynamic s t o r a g e which  the  to  dynamic  This s t a t i c  code segments and  corresponds  of a l l  the  information  constants  level  values  i t i s called  contains  the  the  which a r e t o o l o n g  I t must be s u p p l i e d by  r e f e r e n c e d and  indicates offset  pointed  i s p o i n t e d t o by  contains  f o r a l l o f the  pair.  and  stack  part  execution  variables  (level,order) item  popped f r o m  accessible  stack  except  its first  program. All  values  of t h i s  within  contains templates of  is  stack.  (sc.spt.r) .  and  constants,  stack,  constant  being  s c o p e stack, i d e n t i f y  storage  conveniently  storage  segment  onto t h i s  (ssptr).  v a r i a b l e s and fit  the  variables  The  The  of  entry  i n an e n t r y  segment c o n t r o l s t a c k p o i n t e r  5.  an  64  storage  a  stack.,  stack i s pointed  (dssptr).  is  to  Chapter 7.  IV.  The  ate  The  Virtual  expression  calculations  Debugging Machine  stack and  contains the values of a l l  i s the  m e t i c machine i n s t r u c t i o n s stack, are  ranges  entry  of  pointer 8. all  stack  operate.  e n t r i e s of t h e  this  stack  is  As  with  free  values  storage  w i t h i n the  scope  pointed  storage  which w i l l  stack,  area  not  stack. to  by  within t h i s  The  dynamic  storage  expression  stack  The  valid  last  expression  stack  and  contains  the  basic  a l l values  which  within  the  dynamic  outside  Garbage c o l l e c t i o n i s necessary  unit  of  Descriptors  information  contain  not  five  o f d e s c r i p t o r s : segment, d a t a ,  entry,  and  section  of  stack  they  code  the only  values,  descriptors  Array  d e s c r i p t o r s are s i m i l a r  they  c o n t a i n an  into  Each  o n e - d i m e n s i o n a l , an  There  are  is  the language t r a n s l a t o r s  descriptors  bounds t a b l e ,  element  also  descriptor  segment-specifics  to data the  but  the  a r r a y , segment c o n t r o l  of  d e s c r i b e a l l program v a r i a b l e s and  offset  is  Segment d e s c r i p t o r s d e l i m i t  which  model t h e  Data  another array.  entry.  i n A p p e n d i x C.  machine  desire to identify;  SPAM  to a i d i n r u n - t i m e d e b u g g i n g .  scope  in detail  within  only  information  diagrammed  a l l strings,  are a l l o c a t e d  extensive kinds  values of  area.  descriptor.,  o n l y be  the  f i t conveniently  normal scope c o n v e n t i o n s .  any  the  arith-  (esp.tr) .  The  stack  intermedi-  on w h i c h most o f t h e  of a c c e s s i b l e v a l u e s  d e l i m i t e d by  65  of an  Thus, m u l t i d i m e n s i o n a l  array  RAIDE.  constants.  except  Altho arrays can  itself  arrays are p o s s i b l e .  that can be  Chapter  IV,  The  The  formats  of  the  are  diagrammed i n d e t a i l  is  straightforward  and  should  eight  integer,  boolean,  real,  (e. g.,  structure,  descriptor is  (apples,  the and  possible  its  table to  after  (SPAM the  notation  and  array,  using  of  the  actions  be  following  format  primitive  Figure  of  the  language  or  only  than  do-od  i s the  IV-T  sense).  and  i n A p p e n d i x e s C and virtual  D,  machine  language  the it and  called  Spamdol i s modeled of  [Wort 72].  unusual feature  i s accomplished  rather  1..10),  pointers),  A l g o l 68  ( i n the  type void,  (e.g.,  (i.e.,  by  The  (viz.,  subrange  Language).  c l e a r ; the  b e g i n - e n d  bounds t a b l e  microprogramming  description  below s h o u l d  s u c h as  Spamdol,  union  Descriptive Object  machine  tables  explanation.  illustrated  the a  program i n d e n t i n g )  devices  and  type  reference  formats contained  describe  no  string),  oranges)),  Spamdol s t a t e m e n t b r a c k e t i n g (i.e.,  require  bounds and The  classes:  architecture  instructions  Spamdol  basic  procedure,  Given  e n t r i e s i n the  i n A p p e n d i x D.  table identifies  scalar  66  V i r t u a l Debugging Machine  using  The  is  that  paragraphing  more s y n t a c t i c a l l y r e f i n e d  pairs.  As  an  example  basic i n s t r u c t i o n execution  of  cycle  SPAM:  while  (scsptr  :local with  i f  #  nail)  do  instr_length, scs[scsptr]  (segtype•= procedure) a n d ( l c = e x t e r n a l ) t h e n e x e c u t e _ e x t e r n a l _ p r o c e d u r e (addr) pop_scs e l s e i f ( o f f s e t > length) then  else  Notice  instr_offset  do  the  pop_scs  i n s t r _ o f f s e t :- cao • o f f s e t i n s t r _ l e n g t h := ' execute_instruction(instr_offset) o f f s e t +:= instr_length  declaration  of  local  Spamdol  variables  (e.g..  Chapter  IV.  instr_length (e.g.,  The V i r t u a l  D e b u g g i n g Machine  67  and i n s t r _ o f f s e t ) and t h e u s e o f Spamdol  execute_instruction)  dure, t h e f o l l o w i n g segment c o n t r o l  .  procedures  As an example o f a Spamdol  i s the r o u t i n e  which p o p s an e n t r y  proce-  from  the  stack;  pop_scs: •, l o c a l  old_scse  o l d _ s c s e := s c s f s c s p t r ] i f old_scse.dm a n d old_scse.interrupt.bx t h e n i n t e r r u p t " b e f o r e segment e x i t " i f ( s c s p t r # n u l l ) a n d ( o l d _ s c s e . sso * scsf s c s p t r -  1 ].  sso)  t h e n pop_ss d e e r scsptr i f  i f  ( s c s p t r # n u l l ) a n d (old_scse.segtype # procedure) t h e n s c s [ s c s p t r ] . o f f s e t +:= o l d _ s c s e . l e n g t h o l d _ s c s e . d m a n d o l d ^ s c s e . i n t e r r u p t , ax t h e n i n t e r r u p t " a f t e r segment e x i t " The  All  instruction  instructions  instructions expression  reference stack.  defining appendix.  SPAM i s d e s c r i b e d  z e r o , o n e , o r two  either  The  segment  of  these  control  of  s u b s t a n t i a l l y from  Since  these the  control  structures  segment  control  of  instructions  SPAM  Most  instructions  those  i s  of other  o f t h e Spamdol code contained  in  language- d i r e c t e d  have n e c e s s a r i l y  been  machines, generalized.  instructions;  can  be  provided, along  the  definitions  author's  bias  of toward  from  the i n s t r u c t i o n s  suitable  segment  structured  types.  programming,  the  of the  T h u s , f o r example, t h e r e a r e no I F and FOR constructed  are  block-  segment i s a g e n e r a l i z a t i o n  previous  instructions  operands.  i n s t r u c t i o n s a r e the  A l g o l - l i k e m a c h i n e s , an o u t l i n e  each  i n A p p e n d i x E.  t h e t o p o f t h e segment c o n t r o l o r  majority  Since  o n e s which d i f f e r  structured,  of  have e i t h e r  straightforward. only  set  Owing SPAM  these with  t o the does n o t  Chapter  IV.  The V i r t u a l  c o n t a i n a GOTO  including  both  the  and  relating  in  which SPAM's  C.  Discussion  design  By  the  debugging p r o c e s s  the  design.  thru  primary  the  descriptor  tions:  parameters, data  type  as  reference  will  and  value an  appreciate  ways  process.  aids  debugging  segments and d a t a SPAM  and  validity  code  (i.e.,  has  an  (e.g.,  a s an o f f s e t  type  of  aids  some o f t h e s h o r t c o m i n g s o f  of  values  i n t o t h e type  i s  a tagged  associated procedure or  into  the  actual  and  type  invocaformal  y i e l d e d by segments.  (i.e.,  defined,  pointer),  whether  i s  (i.e.,  unalterable)., This information to  and  t a b l e , whether o r n o t i t i s a  value  assignments,  the  has an a s s o c i a t e d d e s c r i p t o r which i n d i c a t e s i t s  offset  value  contained i n  i s u s e d t o t y p e - c h e c k segment  number  the  example  t h e ways i n which SPAM's d e s i g n  and i t s p a r a m e t e r t y p e s  in  object  this  t h e debugging  and i d e n t i f i e s  information  SPAM  information  way i n which SPAM's d e s i g n  agreement  Each  reader  Each segment o f  This  a  thru  which i n d i c a t e s i t s segment t y p e  statement) table.  the  facilitates  use o f h i g h l y typed  architecture).  following  i t to  This section discusses  of  machine code a n d t h e d e s c r i p t o r s  Appendixes C t h r u E, t h e a s t u t e  The  68  a c o m p l e t e example  needed f o r i t s e x e c u t i o n . , carefully  Machine  instruction.  Appendix E c o n t a i n s program,  Debugging  insure  or  not  whether o r not i t s v a l u e  proper  i s  accessing  used and  i t s current i sa  to  constant  type-check  longevity  of  Chapter  IV.  pointers,  The V i r t u a l  to prevent  inadvertently like  data  table  Debugging  accessing undefined  changing  constant  d e s c r i p t o r s except  offset  Machine  field  they  which  i s  values,  values. contain used  69  Array an  and t o  prevent  descriptors are  additional  bounds  f o r run-time array  bounds  checking.  A n o t h e r f e a t u r e o f t h e SPAM ging  is  the  interrupt  d e s c r i p t o r s which  information  field.  implement t h e segment- and d a t a - i n c i d e n t s exit,  access,  convenient and  data  and  update).  The  aids  F l a g s a r e used t o  o f RAIDE  descriptors  (viz.,  thus provide  values.  SPAM  detects  an e n a b l e d  f i n d s and e x e c u t e s t h e a p p r o p r i a t e  identifying  and  descriptor,  array  designed errors. ments  of  the  specifically The t y p e  deferred  procedure).  The i d e n t i f i e r  and the l e v e l this  components to  aid  and o r d e r  enumerated  user  data  "manipulating  types.  areas  bounds  code"  errors  field  of the  o f t h e data  purpose.  of in  SPAM's  the  checking  The s e p a r a t i o n  prevents  to aid  determining  fields  architecture  detection  t a b l e i s used t o t y p e - c h e c k  f o r array  action.  solely  (e.g.,  and  assign-  The bounds t a b l e  range  checking  o f t h e code area  the ubiquitous  are  o f run-time  variable  and p r o c e d u r e and f u n c t i o n i n v o c a t i o n s .  used  various  o f program e x e c u t i o n  d e s c r i p t o r s serve  Several  is  the s t a t e  name o f t h e c u r r e n t  segment  a  i n t e r r u p t and s i g n a l s  Some o f t h e d e s c r i p t o r i n f o r m a t i o n i s d e f i n e d  the  entry,  method f o r p l a c i n g t r a p s a t d e s i r e d segment l o c a t i o n s  RAIDE, which  in  debug-  "executing  from the  data"  which a r e o f t e n d i f f i c u l t  of  and  to diag-  Chapter nose.  IV.  The V i r t u a l Debugging Machine  The segment c o n t r o l , s c o p e , and  and  their associated  user  program e x e c u t i o n :  the  segment  cated  pointers  history  machine.  are  is  and a l l a c c e s s i b l e  by t h e s c o p e and dynamic s t o r a g e  deficiencies  storage  indicated  by  values are i n d i -  stacks.  inherent  evident  T h e known f a i l i n g s  stacks  a i d i n interrogating the state of  SPAM's d e s i g n h a s s e v e r a l ther  dynamic  the invocation  c o n t r o l stack,  70  shortcomings,  and  fur-  from e x p e r i e n c e s with u s i n g t h e  and s u g g e s t i o n s f o r o v e r c o m i n g  them  follow: 1.  Altho  particular  i t i s possible array  to  have  multiple  allocations  v a l u e s t h e m s e l v e s can  allocating management  but  be  at  is  a bounds t a b l e e n t r y . instruction entry,  table  of  2.  set  there  new bounds t a b l e offset  alleviate  this  Similarly,  run-time  no  with  allowing problems  i s due t o t h e  the  for  Simply d e f i n i n g  NEWBT w h i c h  The bound the  SETBT  dynamically  a new  storage  a l l o c a t e s and i n i t i a l i z e s a  and which a u t o m a t i c a l l y  the  associated  array  sets  the  descriptor,  bounds should  problem. an  array  bounds  the type t a b l e with  (using  mechanism  component  f l e x i b l e bounds due t o t h e c o n s t r a i n t s As  This  being f i x e d i n size at translation-time.  instruction),  a  a t any one t i m e i n SPAM, i t i s n o t p o s s i b l e f o r  e a c h i n s t a n t i a t i o n t o h a v e d i f f e r e n t bounds. bounds t a b l e  of  array  table to bounds  problem, grow  at  suggest  of a s t r u c t u r e  cannot  of the type t a b l e this  have  format.  may be overcome by  run-time.  Nevertheless,  possibly that  the actual  Chapter  IV.  The V i r t u a l  bound v a l u e s s h o u l d in  be a s s o c i a t e d w i t h t h e a r r a y  i t s descriptor)  Altho t h i s  3.  SPAM  rather  would c o m p l i c a t e  elimination  operators.  the  primitive  A l g o l 68.  in  may be a d e g u a t e or  adding  dynamically apparent  extending  how t h i s  the  to  format,  types  such  provide  type f a c i l i t i e s  the  nor s e t  to c o n v e n i e n t l y  imple-  as P a s c a l  more p r i m i t i v e  i t may be more b e n e f i c i a l  table.  compensation.  powerset  i s necessary  (e.g.,  bounds  descriptor  f e a t u r e s i n languages  But r a t h e r t h a n  itself  a separate  array  bits  Their inclusion  ment t h e c o r r e s p o n d i n g  classes,  than  o f t h e bounds t a b l e  h a s no  71  D e b u g g i n g Machine  and  t y p e s and d a t a some  means  o f SPAM.  of  I t i s not  might be done, whether i t i s p o s s i b l e o r  even  whether i t i s d e s i r a b l e . 4.  In some ways SPAM  validly and  reguire  vice  versa  Satfiv,  and  Snobol4). areas  treating (e.g.,  something  combining  instruction  these  tags.  segment and d a t a addition  override transput,  It  must  descriptors  of several other  At times  the  to  also  and  type for  such  and  data  SPAM  a s code such  free  storage  or code. which  which  as  a s L i s p and  be p o s s i b l e t h e n  dynamically,  Then a  explicitly to create  requires  the  instructions.  i t would be c o n v e n i e n t  the  code  as e i t h e r  c a n be added  applications  translators  d y n a m i c a l l y e v a l u a t a b l e languages  and t a g g i n g e a c h s y l l a b l e  resets  Many  which was once d a t a  translate-and-go  This suggests  privileged  5.  i s t o o s t r o n g l y typed.  o f some v a l u e implementing  to  temporarily  (e.g., w h i l e typeless  or  ignore  performing weakly  Or  binary typed  Chapter  IV.  languages  such  instruction override  The V i r t u a l D e b u g g i n g Machine as  (like  BCPL). the  type-checking  which t y p e - c h e c k i n g  What may be needed i s a  PL/I or  i s not'  72  a  ONSPEC special  performed.  function)  to  privileged explicitly  mode o f e x e c u t i o n  during  73 Chapter /*.Let his  chapter  mentation RAIDE,  how  tion.  In  s i z e and  A.  languages  an  on  Scope o f t h e  S h a k e s p e a r e , Coriolanus•-•*/  i n g e n e r a l terms  i t s scope,  t h e UBC  the  programs.  design  of  t r a n s l a t o r s are i n t e r f a c e d  to i t ,  and  used  in  the  implementa-  t o k e e p t h i s t h e s i s down t o a manageable  have  been  to [John  avoided  run-time  e x p l a i n and are  interested  debugging  the  of  system  computer  pragmatic scope  of the  undertaken. i n q u i r e a c t i o n s have n o t been  not of  RAIDE as a c o m p l e t e  and  describes  important  deal with t o p i c s  the  of  p a r t s o f any primary  implemented.  debugging  relevance  to  system, this  explain action i s a f a i r l y  tedious, exercise  in interactive  the o p e r a t i n g system's  responsibility  facility.  The  in  inquire action  is  the  straightforIt is  to provide  realm  techniques f o r i t s implementation  they  thesis.  documentation.  basically  i n t e l l i g e n c e and  The  of  78] f o r the m i n u t i a e .  analysis  section  a c t u a l implementation  Implementation  here.,  details  Implementation  This  they  imple-  the i n t e r n a l  preceding chapters describe  aid in  ward, b u t  and  attempt  i s referred  The  discuss  the v a r i o u s t o o l s  implementation  Altho  Implementation  t o promote i t s l o n g e v i t y , t h e n i t t y - g r i t t y  The to  will  o f RAIDE, i n c l u d i n g  some r e f l e c t i o n s  reader  The  him c h o o s e o u t o f my f i l e s , p r o j e c t s to accomplish. — William  This  the  V.  of  this  artificial  are a  subject  C h a p t e r V.  The  of c o n t i n u i n g  Implementation  study i n that  Of t h e f o r m s <condition> t i o n s and  s e c t o r o f computer  science.  o f t h e <when-clause> o f a <command>, t h e  form  since  74  h a s n o t been  implemented  i t c a n be s i m u l a t e d  f o r m s , a l t h o n o t as s i m p l y f r o m  using  due  when  to i t s r a m i f i c a -  t h e b e f o r e : and  the u s e r ' s viewpoint.  t h e w h i l e ;<condition> form o f t h e e x e c u t e t a c t i o n  after  Likewise,  has  not  been  implemented. Altho ient  and  the  debugging  language  clean  interface  between  implementation  is  not  of  w i t h RAIDE  macros  and  TOSI  "events".  macroprocessing  semantic e f f e c t s rather  the  of f u n c t i o n  that  action.  writing  system  strings,  the  implementation  Since [Vene  reguired  translator  or  even  RAIDE,  i t s  thesis.  accomplished  by  1 thruthe definition  6  TOSI  of "events".  Each  w i t h a TOSI e v e n t  interface  is  a  one  using  which  t h e TRUST  Dispel  fairly  programs a  strings, primitive  implements translator into  TOSI  "low-level"  language. system,  i t  is  language t r a n s l a t o r  RAIDE s p e c i f i c a t i o n s . changing  of the  can be c o n s i d e r e d  the debugging  SPAH code and  7  Altho  76] t o t r a n s l a t e  or w r i t e a t l e a s t  been  conven-  l a n g u a g e [ Brow 74 ], t h e i m p o r t a n t  o f the debugging  To d e m o n s t r a t e modify  has  i t i s possible  current  and  i n v o c a t i o n s are not output  activation  RAIDE a c t i o n s i s a s s o c i a t e d  user  importance t o t h i s  t h e m a c r o p r o c e s s o r TOSI t ^ e n e  conventional  but  the  o f paramount  Thus, user communication extending  Dispel constitutes a  the  code  necessary  to  to produce  the  Since  generation  writing phase  of  a an  Chapter  V.  existing  The  one  translator central a  i s generally is  a  necessary  nontrivial  only  which  tive  of  existing  suits  these c r i t e r i a  structured, reference if-then,  "real"  Algol-like variables;  to demonstrate  S i n c e i t was  representative dures  (called  The  become  a  translator  for  Asple  translated  Asple  (called  generator  produce  producing the required  modifying t h e graph  is  integer,  principal  block-  b o o l e a n , and assignment,  w h i l e ; and  features  simple  missing  invocations,  are  dialect  and  a  which  and  necessary  from  parameter  for  a  truly  of A s p l e c o n t a i n i n g  proce-  defined. from  project was  A s p r o t o SPAM might unto  already programs  IBM  itself. available  easily  have  Fortunately, [ Appe 7 8 ] ,  It  graphic  was  a  code  System/36 0/370 m a c h i n e c o d e . ,  Thus,  Aspro t r a n s l a t o r  then toured  involved  by  extending  i n t o an A s p r o t o GRAIL t r a n s l a t o r ,  t o u r e r t o p r o d u c e SPAM c o d e  specifications.  a  i n t o an i n t e r m e d i a t e  GRAIL) which  A s p l e t o GRAIL t r a n s l a t o r  p r i a t e RAIDE  a  source  representation  choose  representa-  structures:  output,  these  a translator  substantial  to  felt  Asple  containing  input,  was  to  a reasonable t r a n s l a t o r  [Marc 76].  control  language, Aspro)  Providing  i t i s desirable  The l a n g u a g e c h o s e n  the  the  RAIDE and i s n o t  languages.  a r e p r o c e d u r e d e c l a r a t i o n s and  passing.  since  enough t o be  language  expressions.  and  i s complete  i s Asple  if-then-else,  arithmetic  task,  i s s i m p l e enough t h a t  be p r o v i d e d , y e t w h i c h  Asple  75  to t h e i m p l e m e n t a t i o n i t s e l f ,  language  can  Implementation  and  the  the and  appro-  Chapter  V.  To  The I m p l e m e n t a t i o n  verify  design  independence), language  to  [Rich 69],  criterion  i t i s RAIDE.,  The  76 1  necessary The  readily  (viz.,  to  second  source  interface  language  more  chosen  a v a i l a b l e implementation  locally  adapted  version  of  called  BCPL-V  (Rich 77].  language t h a n one was  o f BCPL i s a  the  standard  portable  translator  The  original  translator  produces a  parse tree  w h i c h i s t o u r e d by  semantic  symbolic  assembler  for a  mythical  machine  routines  then  translate  MINICODE.  Code  intermediate computer. writing  representation  semantic  specifications constructs  program  generation  BCPL-V  of  was  into  modified  routines  directly  from  the  original  modified t r a n s l a t o r ,  most o f  to  which the  I n t e r n a l Design The  Figure 1.  to  output  called this  interface  generate parse  are  which  RAIDE  I t has e i g h t  into  Altho  not  implemented  have  not  parallels  offset  The  v a l u e o f a t y p e name t a b l e  the type t a b l e a l s o  i n the  been  are  anyway.  table.,  SPAM*s t y p e  index  of  t y p e as a c h a r a c t e r s t r i n g  table,  indexes the type  entry  string  thru  a l l  by  major components:  an  indirectly  by  SPAM c o d e and RAIDE  tree.  language those  with  b a s i c i n f o r m a t i o n s t r u c t u r e o f RAIDE i s i l l u s t r a t e d  V-1.  a  o f RAIDE  The ty_P_e name t a b l e  that  routines  t h e machine code o f t h e h o s t  e x t e n s i o n s t o t h e standard language  B.  BCPL  i s  Thus, g i v e n a t y p e i s  an  name t a b l e . ,  offset  into  table o f f s e t ,  obtained  t h e t y p e name and s t r i n g  that i s ,  index  by  the  t h e name  referencing  tables.„  C h a p t e r V.  The  Implementation  77  r bounds name mapping table  bounds name table  type name table  r->  I  i  string index table  I  I I I I  I  T I | I  ->l  i \ I I  Figure  V-1.  1  H  1 symbol  table  I  «~->l  string  table  debugging value stack  1  1 .  :  ;  .  Basic Information  I  Structure  o f BAIDE  I J I  Chapter 2.  V.  The  Unlike  The I m p l e m e n t a t i o n bounds  the  name  type  78  table  name  parallels  table,  SPAM*s  bounds  i t s v a l u e s do n o t r e f e r e n c e t h e  names o f b o u n d s , b u t r a t h e r t h e names o f t h e v a l u e s For  example,  internally  the  scalar  for printing  v a l u e must be o u t p u t r a t h e r rather  3. is  (reel,  a s a subrange of i n t e g e r  Nevertheless,  white,  blue)  type  ( e . g . , 0,  purposes, than  of  may  be, s t o r e d  1,  and 2 ) .  i t s i n t e r n a l value  ( e . g . , »red'  than 0 ) .  not  one-to-one,  t h e p r o p e r mapping.  blue)  o c c u p i e s one e n t r y i n b o t h  tables.  ;  F o r example, t h e s c a l a r  name t a b l e  (red, white,  names must be a c c e s s i b l e , t h e  e n t r y i s an o f f s e t  into  o f t h r e e bounds name mapping t a b l e e n t r i e s w h i c h a r e type  name  table  index table.  implementation,  names  t h e bounds and t h e bounds name  But s i n c e t h r e e d i f f e r e n t  v a l u e o f t h e bounds  and bounds  t h e bounds n a f e H B E i n f t a b l e i s n e e d e d t o  effect  string  bounds.  t h e name o f some bounds  S i n c e t h e mapping o f bounds t a b l e o f f s e t s  the  table.  entries  I f scalar  both  the  the f i r s t used  to reference i n d i r e c t l y types a r e not  bounds  like  thru the  supported  by  the  name and bounds name mapping  tables are superfluous. 4.  The  entries of the string  representing with  each  variable the  identifiers  and t h e  program segment.  identify  source-level  A l lidentifiers  code  string  index  table.  An  entry  a n d an o f f s e t  of the character string.  into  the strings associated  (e.g., type  names, and t h e names o f g e n e r i c s ) a r e  length o f the s t r i n g start  index t a b l e  names,  referenced  thru  c o n t a i n s two f i e l d s : t h e the s t r i n g  area  t o the  C h a p t e r V. 5.  The I m p l e m e n t a t i o n  The s t r i n g , a r e a  strings  of  characters  as w e l l a s t h e u s e r  s_mbgl  table  contains  the source  entries for a l l entities  a c c e s s i b l e . b y RAIDE, i n c l u d i n g a l l u s e r  segment-specifics, functions, of  containing  code.  The  are  i s an a r r a y  representing a l l i d e n t i f i e r s  program 6.  79  the  generics, events  program  A p p e n d i x G.  data-  and  and d e f e r r e d a c t i o n s , s y s t e m  and d e b u g g i n g v a r i a b l e s and p r o c e d u r e s .  e n t r i e s o f t h e symbol  which  The  formats  t a b l e a r e diagrammed i n d e t a i l i n  The l i n k a g e o f s y m b o l  table  entries  i s  complex,  owing t o t h e number o f ways i n which t h e t a b l e must be  accessed.  Examples o f RAIDE s y m b o l  presented  in  Appendix  7.  The  into  8.  fields:  stack  during  contains  execution.  a value-defined  flag  the  for a specific the  symbol  variable, the  table  of a l l  and t h e v a l u e  stack  f o r the user  values  An e n t r y o f t h i s  an i n t e g e r v a r i a b l e , t h e s t a c k c o n t a i n s  value;  with  value  variables  c o n t a i n s two For  therefore  H.  debu^ginci  debugging  table e n t r i e s are  itself.  i t s actual contains  program e n t i t y  stack  an  integral offset  associated  the v a r i a b l e , To  access  symbol  t a b l e e n t r i e s by name, i t i s n e c e s s a r y  hash i d e n t i f i e r s  thru the  identifier  identifier  represent  several  (e.g., scopes  f  foo* and  function),  can may  be a u s e r  •line* the value  may  program be a u s e r  hash-•.____§.«. different  variable  Since  entities in  two  to one  i n RAIDE different  v a r i a b l e a s w e l l a s a system  o f an i d e n t i f i e r  hash t a b l e  entry  identi-  Chapter fies  V,  The I m p l e m e n t a t i o n  the f i r s t  of a series  hoffiSHU £ k § i n  A  Appendix  the  C.  Interfacing  This  T h e n e x t two  RAIDE  supplied  by  sections  a language  i n t o RAIDE*s  program  below  discuss  interfacer  and a  tables.;  summarizes  the  information  must s u p p l y f o r e a c h l a n g u a g e  section  entry.  a Language  III  interfacer  entries.  both t h e d a t a - and s e g m e n t - s p e c i f i c s o f  are integrated  Table  is  including  information  translator  table  M  used t o d e t e r m i n e t h e a p p r o p r i a t e  u s e r s o u r c e program.  how  o f h o m o n y m i c " symbol  I c o n t a i n s a c o m p l e t e example o f a  specification, the  i s then  80  will  describe  which  a language  interfaced  i n greater d e t a i l  to  RAIDS.  how t h e i n t e r f a c e  accomplished.  The identify (lc,id), •id'..  first  requirement of  itself where  to  *lc*  ' I c ' i s used  BAIDE s y m b o l source written.  table  language  RAIDE  the  by  language  supplying  i s t h e l a n g u a g e code i n SPAM d e s c r i p t o r s entries  in  ( c f . , Figure  which  a  a  pair  o f the  i s to  o f t h e form  language  named  { c f . , F i g u r e C-1) and i n G-5)  particular  RAIDE m a i n t a i n s a t a b l e o f  interfacer  to  identify  program  the  segment was  a l l language  name  pairs  internally.  For  a  particular  generics are  defined  (gentype,code,id), the  generic  host as  a  language, series  of  t h e segment- and d a t a triples  where ' g e n t y p e ' i s a f l a g  of  the  indicating  name * i d ' i s a segment- o r d a t a - g e n e r i c ,  and  form  whether 'code'  Chapter is  V.  The  Implementation  the t y p e code a s s o c i a t e d  triples  81  with the generic.  for a block-structured  language might  (segment,1,PROCEDURE) (segment,2,BLOCK) (segment,3,STATEMENT) The  definition  generic  table  (e.g.,  the  'segtype*  table entries  The to  as  an  subscript  range  error,  particular  error  number.  The  •code  1  named  F o r example, i t  was  For  used  as  of  descriptors  and i n RAIDE  of Figure  the  ordering  an  supplied  of  error  must a s s o c i a t e a message w i t h when  reports  SPAM  detects  this  to  an  RAIDE  number t o  language-dependent  number  F o r example,  in  symbol  G-1).  messages a r e  a s e r i e s o f p a i r s o f t h e form associated  with  (10,FAILURE) might be failure.  'code*  is  t h e SPAM SIGNAL i n s t r u c t i o n  each language-dependent  interfacer,  SPAM  array  using  locate  a the  the o f f e n d -  written.  language having statement number  •code' i s t h e  e r r o r message f o r t h e l a n g u a g e i n w h i c h  i s the e x c e p t i o n 'id',.  in  of  where t h e i n d e x e s c o r r e s p o n d t o  RAIDE u s e s t h i s  identification  accomplished  run-time e r r o r  language i n t e r f a c e r  number.  program  used  o f F i g u r e C-1)  indexed f i l e ,  each e r r o r  appropriate  code  SPAM and RAIDE d i c t a t e  the  construction  ( c f . , F i g u r e G-3).  (e.g., the 'datatype* f i e l d  numbers.  numbers;  ing  field  language-oriented  RAIDE  error  type  be:  r e s u l t s i n the  entries  segment- o r d a t a - g e n e r i c  the  (da ta,1,VARIABLE) (data,2,CONSTANT) {data,3,PARAMETER)  of these t r i p l e s  symbol  For example,  event  exception  symbol  table  (code,id), the  is  where  exception  defined  f o r some  the  exception  ( c f . , Appendix  identified entry  exceptions  by t h e  E).  language  { c f . . F i g u r e G-H)  is  Chapter  V.  The  Implementation  82  created. Generic-related supplied where  as  »id»  number  a  is  series  the  which  of  pairs  function's  associates  routines.  For  a  function  system  and l a n g u a g e - d e p e n d e n t  each  symbol  the  name  the  function  of  form  and  table  functions  with  by  the  entry  are  (id,routine-number),  •routine-number  function  defined  system  an  internal  language (cf.,  is  a  list  of  1  interfacer,  Figure  G-5)  is  which  a  created. D.  Interfacing  Tables translator RAIDE.  An  must  is  supply  operation  descriptors  by  the  a  program  will  code  Figure  source describe  SPAM's  F-2,  code  the  area. with  object  information  in  to  interface  greater  to  detail  how  the  basic  requirement  is  to  a user  source  program.  As  of  a  sequence  of  code  occupies  one  the  information  provide  is  Appendix  D diagrams must  the  initial the  supply  consists where  As  part  all  program  constitute  of  this  codes,  associated in  most  version  operand  essential  translator  summarize  translator's  SPAM  descriptors referenced  for  section  and in  V  accomplished.  a  exemplified  other  and  interfaced  generate  syllable  Translator  IV  This  interface  a  must  which  required quintuples  of  the  segment-  initial  state  each  of  also  the  formats of  the  and  be  dynamic a  SPAH  supplied.; storage  bounds  form  the  data-specifics  translator  of  code,  and  these  These  stack.  The  must  always  type  tables.  tables.  (tto,d,c,lb,ub)  A to  Chapter  V.  The  Implementation  83 i  define  the  bounds t a b l e  (class,arg1,arg2), value of only  must  supply;  where 'arg1»  • c l a s s ' , to  supplies  and  define  SPAM  the  and  *arg2*  type  c o d e , SPAM  To  execute  at  the  supply  enough  information  to  enable  RAIDE  symbol t a b l e  f o r the  executing the  form  specifics is  the  Figure the  SPAM  the  construct  construct  the  translator and  machine  level  of  the  only  reguests  names ( e . g . ,  " d i s p l a y  the  type  to  level  of  report  which x.",  are  but  complete  data-  where  *dsso*  the  template  These  entries  not  (cf.,  pairs  to  Since  o n l y - i d e n t i f i e r s are and  d e p e n d e n t s o l e l y on " d i s p l a y  of  b o u n d s name  respectively.  symbolically  data-specific  pairs  (bnmto,bounds-id)  debugging  errors  pairs  user  name t a b l e , t h e  a translator provides s u f f i c i e n t of  all  named • i d * .  and  table  symbolically  a t r a n s l a t o r must s u p p l y  (bto/bnmto) ,  symbolic  symbol  Specifically,  offset  specific  support, a  s k e l e t a l run-time  for  b o u n d s name mapping t a b l e ,  RAIDE can  construction  a  d a t a - s p e c i f i c symbol t a b l e  of  of  errors  supplied  stack  with the  construction  interactive  If  on  bounds  symbolic constants),  Additionally,  simple  supplied,  form  the  level  reporting  be  storage  (tto,type-id) ,  t a b l e , and  to  v a r i a b l e s and  associated  facilitate  at  must  dynamic  G-1).  form  a  translation-time  p u r p o s e s of  (dsso,id)  used t o  symbolic  s i m p l e i n t e r a c t i v e commands.  (e.g.,  descriptor are  If  basic  the  dependent  d e s c r i p t o r s , and  simple  must  of  of  support. .  translator  and  are  table.  t y p e t a b l e s , t h e n RAIDE e x e c u t e s a t t h e debugging  triples  x  i n  identifier  foo.").  information symbol  perform  to  table  allow entries  Chapter (viz.,  V.  The  the  'level ,  G-1),  level.  An  Figure  1-1,  then  I t i s then  information  ...."  84 'datatype',  RAIDE c a n  example o f a  x i n foo to  a user  'order*,  1  Figure  "set  Implementation  10."  a  program, cannot  be  description  possible  t o respond  "display  i s yet a v a i l a b l e  fields  as  is  "for  of  debugging  presented  by  to r e q u e s t s such  each VARIABLE,".  c o n c e r n i n g the  reguests such  'link*  operate at the symbolic  such  and  and  static  each  as  Since  no  structure  STATEHENT  in  of foo  honored.  S e g m e n t - s p e c i f i c s a r e r e p r e s e n t e d t o RAIDE as q u a d r u p l e s t h e form  entries, static the  Figure  G-2.  i n the c o n s t r u c t i o n o f s e g m e n t - s p e c i f i c symbol  table  ( i d , s e g t y p e , d s s o , l i n k ) , * as diagrammed  They r e s u l t  which a r e RAIDE'S way  debugging  description it  of storing  s t r u c t u r e of a user source  full  is  level  of  presented  i s p o s s i b l e t o respond  program.  support.  to interactive  example With  s t r u c t u r e , such  as the  Section  III.C.  If a translator  additionally  G-2), E.  then  program the deluxe  Reflections The  simulator  code  first  the f o l l o w i n g  debugging  the  level  on t h e I m p l e m e n t a t i o n  PL/I flBM  language, reasons:  but  70]  was  was  the to  such  a  such i n f o r m a t i o n  various trace  the  r o u t i n e s of  s u p p l i e s RAIDE w i t h  'phrases' f i e l d  of  Figure  of s u p p o r t i s e n t e r e d . Tools  component o f t h e s y s t e m  f o r SPAM.  implementation  (viz.,  of  reguests involving  program  source  of  This corresponds  An  Figure 1-2.  by  in  the d e s c r i p t i o n  static  the  of  t o be  implemented  initially  abandoned a f t e r  chosen a few  as  was  a  the  weeks f o r  Chapter  1.  V.  In  The  PL/I  declaration  the of  containing  stack  and  be  the  ous  simulated  technique besides thing, 2.  as  i n the  considerable declaration reguires variation  example o f  Pascal of  since  elements  i t is  must  error-  The  Pascal  numer-  sense,  declaration,  unnecessary  The  values.  all the This,  mechanism  element  be  cannot  but  can this  restrictions (i.e.,  say  SPAM  descriptor  (cf., Figure  used  to  space  one  to  in  types.  This  for  with  simulated  overlaying  As  with the  resulted  in  variant DEFINED  parts,  but  storage  error-prone.  arrays  example,  segment, an  this  proper  i s needed, f o r  array  DEFINED  largest  declaring  and  make  the  t r i c k y and  w h i c h i s composed o f  descriptors.  The  accommodate  i s both  PL/I  C-2).  insure  variant  formats  simulate variants,  programmmer t o too,  contain  dynamic s t o r a g e s t a c k ,  This  storage  7 0 : 3 4 5 - 3 4 6 ] make i t  L I K E [IBM  the  be  two  attribute  more d i f f i c u l t .  PL/I  t h i s feature  reguires  T h e r e i s no  t y p e can  declare  structure  t r i c k y programming  in  sense.  allocating  heteroqeneous  of  the  dynamic  declaration  from s e e m i n g l y  a t t r i b u t e can  and  use  declarations  use  alignment of  3.  modification  and  another).  Structure  parts,  LIKE  the  the  a CONTROLLED " v a r i a b l e "  an  mean  (e.g.,  Type d e f i n i t i o n s , i n the  suffers  being  the  types  Thus, t o  i s c l e a r l y undesirable  the  well.  also  but  on  with  combined.  stack), either  twice or  former  restrictions  structured  same s t r u c t u r e s  makes program  undesirable be  out  The  p r o n e and  the  of  are  expression  written  used.  definition  variables  arrays  must be  85  Implementation  array  declaration  of  of with  data, union  attribute.  numerous i n e x p l i c a b l e e r r o r s  under  Chapter the  V.  The I m p l e m e n t a t i o n  t r a n s l a t o r used [ M i l l  for  the  abandonment  86  76a],  of  w h i c h was t h e p r i m a r y  PL/I  as  the  systems  motivation  implementation  language. 4.  The  implementation  i n v o l v e s t h e use o f c a s e case  statement  The  the  latter  machine  5.  use  PL/I contains  and a GOTO, t h e  preprocessor  Altho  an  indexed  n o t too opaguely i n PL/I  need  f o r an  obscures the  fundamental  no p r o v i s i o n  for  Named  else  structure  notorious  unprettyprint  tricky  can  clause  o f the  be  manifest)  o f t h e system  introduced  using  a  a v a i l a b l e PL/I preprocessor i s  and e s p e c i a l l y  programs.  can i n t r o d u c e  ( i . e. ,  t h r u t h e d e c l a r a t i o n o f STATIC  The l o c a l l y  (uglyprint?)  variables  All  constants  f o r i t s expense  "named"  the m o d i f i a b i l i t y  o r c a n be s i m u l a t e d  INITIAL " v a r i a b l e s " .  needless  Using  f o r i t s tendency t o constants  disguised  run-time overhead,  besides  programming.  o f t h e above c r i t i c i s m s handles  which  discarded  in  simulator  and B AIDE were i m p l e m e n t e d u s i n g  favor  of  Pascal t r a n s l a t o r [ P o l l o f standard  types  o f PL/I point  language  dialect  inherently  out i f - t h e n - e l s e statements i n s t e a d .  T h e i r use i n c r e a s e s  tremendously.  being  simulator  simulator.  constants.  as  machine  be s i m u l a t e d  o f strung  clearly  a  statement c o n s t r u c t s .  can o f t e n  u s i n g a LABEL a r r a y forces  of  Pascal  more e l e g a n t l y . [Jens  74].  77], which accepts  Pascal.  t o t h e need f o r a  Altho  Both  T h u s , P L / I was the  machine  the; l o c a l l y a v a i l a b l e a  somewhat  deviant  an a t t e m p t was made t o a d h e r e  Chapter to  The I m p l e m e n t a t i o n  the standard  ous /*  V.  lure  87  language to f a c i l i t a t e  of the b e l l  portability,  force —  tion  defects tion. the  Pascal  language.  proved  and o m i s s i o n s  which  i t suffers  [Conr  language.  implementation  i n { C o n r 7 6 ] were v e r i f i e d BAIDE.  problems  Pascal  dynamic  array  allocation  including  array  definition  [Conr  s t a c k s would simply  76: s e c ,  3. 2 ] ,  b e s t be a l l o c a t e d  the  a  time  expression [Conr  was  found  more o t h e r s  as  that (e.g.,  one  a  implementing  into  here:  i t s lack arising  t h e : array  of from type  SPAM'S t a b l e s a n d s e v e r a l o f i t s early  during  execution.  Since  was n o t p o s s i b l e , l a r g e chunks o f memory were  Syntactically,  in  The f i r s t  Pascal  a r e presented  difficulties  directly  needlessly to avoid r e t r a n s l a t i n g  2.  of  most s e v e r e l y f o r  and  dimensions  75].  using  experiences  experiences  has been c r i t i c i z e d  of f r u s t r a -  Most o f t h e p r o b l e m s d e s c r i b e d  by t h e  Some o f t h e s e s h a r e d  with  minor  documented  76, Habe 7 3 , Knob 75, L e c a  systems  up  numerous  T h e d e f i c i e n c i e s o f P a s c a l have b e e n w e l l  the  this  from  Mencken * / implementa-  were a c o n t i n u a l s o u r c e  r e f e r e n c e r e l a t e s best  1.  Henry L o u i s  t o be a u s e f u l s y s t e m s  Nevertheless,  literature  insidi-  a n d t h e w h i s t l e became o v e r p o w e r i n g .  T e m p t a t i o n i s an i r r e s i s t i b l e a t work on a movable body,  Overall,  the  tied  a l l subroutines freguently.  P a s c a l c o n s t a n t c a n n o t be a t r a n s l a t i o n 7 6 : s e c . 3. 3.1 ], constant's  In several  instances i t  v a l u e was a f u n c t i o n o f one o r  l e n g t h = max_index - m i n _ i n d e x • 1 ) .  a v a r i a b l e h a d t o be u s e d o r t h e c o n s t a n t  defined with a  Either literal  Chapter  value  V.  along  Neither 3.  level  4.  must  storage  The  be  which t h e y  annoyance,  are  allocation  a t the  procedure  5.  [clar  of  74]  A l g o l 60  hiding  of i d e n t i f i c a t i o n  separation  of  of  own  (or P L / I  4.3],  level,  not  at  Altho  a  identification  RAIDE  storage  76:sec.  since,  for  3.7.1],  example,  run-time.  T h i s had  dependent  routines,  simulated  thus reducing  and  better Again,  f u r t h e r the  the  generic-related  n o t be  using  a  i s desirable.  3.7.1] were needed i n  ( e . g . , C0RRENT_PROCED0RE) n e e d be  passing  lifetime  functions  to  STATIC) v a r i a b l e s  [Conr 76:sec.  and  Procedure v a r i a b l e s (Conr  implementation  value.  i s more d e s i r a b l e .  information  separation  the  most a p p r o p r i a t e l y l o c a l .  w o u l d , i n some i n s t a n c e s , r e d u c e p a r a m e t e r facilitate  of  b l o c k - s t r u c t u r e (Conr 76:sec,  declared  Sue's  addition  origin  satisfactory.  lacks authentic  to  88  a comment e x p l a i n i n g t h e  solution i s  variables  minor and  Implementation  with  Pascal  all the  The  specified  until  operating-systemportability  of  the  implementation.  6.  Programs  would be  be  assigned  as  i n A l g o l - W and The  to the  more c o n c i s e  f i e l d s of A l g o l 68  n e x t few  an  a record  criticisms  are  [Conr  76:sec.  4. 2 ] .  aimed s p e c i f i c a l l y  2.1],  yield This  could  statement,  at  been e x t e n d e d t o d e a l w i t h  In P a s c a l a f u n c t i o n c a n n o t array  c l e a r e r i f values  v a r i a b l e in;one  [Conr 76:sec.  P a s c a l s i n c e PASCAL/OBC has  7.  and  a value  standard them.  of r e c o r d  seemingly  type  or  nonuniform  Chapter  V.  The I m p l e m e n t a t i o n  restriction 8.  i n c r e a s e s t h e use o f v a r p a r a m e t e r s .  The c a s e s t a t e m e n t  else  89  o f s t a n d a r d P a s c a l does n o t  c l a u s e [Conr 76:sec.  if_then_else  statements, in  the  2.4],  This often  with a r e s u l t i n g  else  clause  case  statement  which  p u r p o r t s t o be f a i l - s a f e ,  contain  an  l e a d s t o strung out  loss of  clarity.  i s essential  as i s expected  of  An  f o r software a  debugging  system. 9.  Nesting of i f - t h e n  expressions 2.3  Provision  statically, using  e v a l u a t e d i n t h e McCarthy  should  including  decision  structuring  be  tables,  [Conr 76:sec,  3 . 7 . 1 ].  they point  a  a  of  large  for  boolean  manner [ C o n r  76:sec.  initializing  76: s e c .  4.2].  a l l values Applications  are often the clearest,means of  Even  procedures  software  The  otherwise.  Pascal i n this The  which  compilation of  12.  i f  an a l g o r i t h m , r e q u i r e " c o n s t a n t " , a r r a y s .  Separate  intolerable  made  arrays [Conr  implementation  in  be r e d u c e d  J.  10.  11.  are  statements could  expense  i s essential  system  such  f o r the  as  BAIDE  of r e t r a n s l a t i o n  becomes  F o r t r a n i s more s o p h i s t i c a t e d  than  c r i t i c i s m s a r e p r e s e n t e d i n more d e p t h  since  regard. ,  following  t o problems  which  have n o t been d e a l t  with adequately  the l i t e r a t u r e . Assuming t h a t related  separate procedure compilation i s  e x t e n s i o n which  i s needed  i s global  available,  variables  (i.e..  C h a p t e r V.  The I m p l e m e n t a t i o n  90  EXTERNAL i n t h e P L / I s e n s e ) .  Altho the extensive  variables  contested  i s c u r r e n t l y being  [Wulf 7 3 ] ,  their  restrained  parameter  passing  and  can  PASCAL/OBC h a s been e x t e n d e d implementation definition all  i s primitive.  modified  13.  length  characters  i s  as  the  strings,  RAIDE  Pascal's  extend.  The  when  transput  for  global variables,  their  retranslaticn  no r e f e r e n c e s  of  to the  poor i n P a s c a l , p r i m a r i l y s i n c e of  characters.  the  file  types of  faqilities  opened  environment,  i s  no  not  useful during  arrays  i n one f i l e {e.g.,  The s y n t a x  so p a i n f u l l y  to  string-  debugging.  and  record be  difficult  of a f i l e  to  must be  acceptable  in  a  processing  of nontextfiles i s likewise t o place  or to e a s i l y  read  implement the  save  of the  arduous.  transput.  debugging.  b u t i t makes i n t e r a c t i v e  The h a n d l i n g  no  to assign  incore  are austere  may  are  particularly  I t i s sometimes c o n v e n i e n t  together  a c t i o n s o f RAIDE). makes d o i n g  and  has t o u n d e r g o  i s  There  no s u b s t r i n g p s e u d o v a r i a b l e  provision that the f i r s t  restrictive.  portions  very  implementation  unnaturally d i f f i c u l t .  various  need  Altho  reguire  features are especially  batch-oriented  too  the  hiding./  which c o n t a i n  arrays  Even a d e b u g g i n g s y s t e m  read  information  t o a segment o f a s t r i n g ,  o r i e n t e d , these  14.  aid  designers  To make even a m i n o r change, i n t h e  those  handling  are treated  variable  Altho  even  reduce  global  variable.  String  strings  does  o f one g l o b a l v a r i a b l e may  procedures,  among l a n g u a g e  use  t o provide  use o f  Pascal  file  records of and and  write  restore  declaration  Chapter  V.  The  15.  Pascal  all  datatypes.,  yellow)", the  Implementation  should  provide Given  i t i s the  upper  scalar  u p p e r bound type  ' c o l o r ' i s 'yellow'. applied  this.  The  constants  red,  t o remember  that  to  are  be  will also  be  such as  reduce the  d e f i n i t i o n s necessary.  16.  In  the  significant language  to the  far  be  too  [Jens  unigue  restrictive  to  use  74]  suggests  their  for  characters  their  is  not  first a  first  an  array,  identifiers  characters..  Horse  to  are  only  still,  the  for  portability  that  eight  characters.  This  s y s t e m s programming a p p l i c a t i o n s  of  difficult-to-detect  unigue w i t h i n  bounds o f  ten  within  s i n c e i t encourages the lead  implementation,  first  standard  identifiers is  PASCAL/OBC  types to  e s s e n t i a l f o r subrange types, constant  'succ'  allowed  t h e n bound f u n c t i o n s  number o f  and  scalar  translation-time expressions,  the  for  (blue,  'pred'  effectively  If  functions  "color =  programmer's r e s p o n s i b i l i t y  bound o f  knowing  l o w e r and  the  f u n c t i o n s c a n n o t e v e n be without  91  cryptic  abbreviations  e r r o r s i f two  ten  can  i d e n t i f i e r s are  characters.  significant  and  A  limit  not  of  ten  improvement o v e r s i x , as  in  Fortran. The the tion  length  reader  to  language  complete,  not  of the  above comments c o n c e r n i n g  believe that was  poor.  scathing.  systems implementation,  i t s choice The Altho  i t has  as  the  systems  criticisms Pascal  proved  Pascal  was  are  may  implementa-  meant  not  to be a u s e f u l  lead  to  be  designed  for  tool.  C h a p t e r V.  The I m p l e m e n t a t i o n  92  Even t h o b o t h t h e SPAM s i m u l a t o r in  Pascal,  D i s p e l was  Dispel-like  transliteration were w r i t t e n  expeditious.,  merely i n v o l v e s  The ness  form.  of  Since  For TOSI  TOSI macros  of D i s p e l as well Altho  not elegant  interfacing  the macroprocessor  Thus, r e i n v o c a t i o n  with  interprets  of a d e b u g g i n g  into routine  were  not  were  with  using  painfully,  TOSI  Experiences using  also  and' t h e r e  Furthermore,  proved  expensive,  t h e TRUST t r a n s l a t o r w r i t i n g was  extension  also of  implemented  TRUST c a l l e d  TRUST a r e d e s c r i b e d  primitive  implementation  of s u p p o r t , t h e i m p l e m e n t a t i o n  Aspro t r a n s l a t o r an  reporting  Several  undocumented  i n t h e documentation.  implementation using  and  TOSI was t h e i n c o m p l e t e -  f Vene 7 6 ] .  described,  unearthed  Executing  operators  such  variables..  i t s documentation  with  the  h a n d l e s many o f t h e l a b o r i o u s d e t a i l s ,  and a low l e v e l  together  tfoo.,•* has  method o f  the p r i m i t i v e arithmetic  inaccuracies  The  i n  i s no need t o t r a n s l a t e u t t e r a n c e s  primary d i f f i c u l t y  limitations  shaky.  embedding  r e i n t e r p r e t i n g i t s s t r i n g . d e f i n i t i o n s , \ Further,  debugging  functions  use  there  automatically  undeclared  :,x  n o n t e r m i n a l symbols.  p o i n t o f view, t h i s  intermediate  providing  " d i s p l a y  f o r each o f the p r i m i t i v e a c t i o n s  proved  TOSI  by  k  strings directly,  as  utterance  f o r most o f D i s p e l * s  RAIDE  implemented  implemented  "(DISPLAY, (IN, ( I D , x ) , (ID, foo));)••«•  from the u s e r ' s  an  provisionally  were  commands i n t h e m a c r o p r o c e s s o r TOSI ( V e n e 761.  example, t h e D i s p e l  as  and RAIDE  were  some  due t o l i m i t e d was  somewhat  due  to i t s  system. using  TRUST,  LANCE {Appe 7 8 ] ,  e l s e w h e r e £ Abra 7 7 ] ,  The  Chapter most  V.  The I m p l e m e n t a t i o n  significant  documented,  criticism  93 of  TRUST  is  As w i t h TOSI, i m p l e m e n t a t i o n  that  i t  limitations  documented, r e s u l t i n g i n many h o u r s o f f r u s t r a t i n g The  best  aspect  generator routine. intermediate  of  I t i s an  tree  tourer  Aspro  translator  The  Algol-W  t o generate  o n l y about  translator to  which  itself  of  modular c o m p o s i t i o n .  the  a  syntactically  was  documentation  used.  In  tours  and  was  an  program.  since  moderately  implementation  the  easy,  with  The  translator,  structured  i t s coding  i n terms of  is  poor  implementation  itself,  language.,•  Altho  t h e c o n t r o l s t r u c t u r e s a r e n a t u r a l and The t y p e l e s s n e s s  (as had been e x p e c t e d ) a  was m i s s e d .  The  moral  of  s o f t w a r e as i s t h e way. i n which  o t h e r words, human f a c t o r s  BCPL  but a r e c o r d i s  that  i s not as important a c o n s i d e r a t i o n  c h o i c e of language.  and  ;  p r e s e n t e d by t h e t r a n s l a t o r  applications.  facility  RAIDE.  was m o d i f y i n g t h e  i s nearly nonexistent.  systems  peculiar,  o f a language  use f o r s y s t e m s  the  good  not a negative feature  syntax  code  Unfortunately,  f o r systems  type d e f i n i t i o n  which  t h e code  of the user source  i n BCPL, i s w e l l  D e s p i t e t h e bad example BCPL p r o v e d  i s  r e a d a b l e program, m o d i f y i n g t h e  SPAM  interface  i s written  implementation  not  two weeks o f e f f o r t .  phase  BCPL-V  program  were  debugging.  translator  o f the r e p r e s e n t a t i o n  i s a well-written,  last  convenient  Aspro  graphic representation  Because of the c o n v e n i e n c e  requiring  the  i s poorly  the  in i t s  the language  a r e more s i g n i f i c a n t  is than  94 C h a p t e r 71.  The The  r e s e a r c h c o v e r e d by  following  1.  The  g i n g was 2.  a r e t h e major  extensively  A new  with  3.  accomplishments  A debugging  t o o l was existing  ones.  completely  w i t h RAIDE was  its  use t o e x p r e s s d e b u g g i n g  fied;  a low-level, t r a n s l i t e r a l  5. to  concepts.  Two  however, D i s p e l  machine  to  was  research:  program  debug-  with  RAIDE  based  E x c e p t f o r some  minor  Dispel,  for  interact-  Numerous examples  of  presented.  to  not implemented  Due as  speci-  Dispel  using  substituted.  facilitate  language t r a n s l a t o r s ,  perceived  RAIDE, was  implementation of  and e v a l u a t e d . , A s i m u l a t o r  interface  facets.  implemented.  i n t e r a c t i v e m a c r o p r o c e s s o r was  designed  system,  r e q u e s t s were  constraints  A virtual  The  d e s i g n e d and e v a l u a t e d .  time  4.  of t h i s  run-time  command l a n g u a g e , c a l l e d  ing  an  many  conceived i n response to  o f debugging  RAIDE was  involves  surveyed.  debugging  the a b s t r a c t i o n  features,  this thesis  current state of i n t e r a c t i v e ,  deficiencies on  Summary and C o n c l u s i o n s  run-time  f o r i t was  f o r A s p r o and to  debugging implemented.  BCPL, were  demonstrate  was  its  modified language-  independence.  6.  Reflections  implementation  on t h e t o o l s u s e d  were p r e s e n t e d .  i n the v a r i o u s phases o f t h e  Chapter  VI.  This of  chapter continues  RAIDE,  a  discussion  possible future  extensions  worthy o f e x p l o r a t i o n , ences o f  the  designed  A.  with  an e x p o s i t i o n  of the importance  o f i t s shortcomings, t o RAIDE and o t h e r  some  t h o u g h t s on  a r e a s i n debugging  and some s u g g e s t i o n s b a s e d on t h e e x p e r i -  implementation  to f a c i l i t a t e  for  run-time  how  translators  should  be  debugging.  Importance  The  d e b u g g i n g s y s t e m RAIDE  original of  95  Summary and C o n c l u s i o n s  and  program  1.  The  rather  i t s language  contributions  debugging f o r t h e f o l l o w i n g kernel  sufficient Unlike  significant  and  of  RAIDE  t o implement  previous  contains  haphazardly,  systems  RAIDE's d e s i g n  are  t o the s t a t e o f t h e a r t  reasons: a small  a l l the t r a d i t i o n a l  debugging  Dispel  which  set of primitives  debugging  actions.  have  designed  i s b a s e d on  been  the  concept  of  minimum s u f f i c i e n c y . 2.  The t r a d i t i o n a l  and  primitives  t r a p s ) , have b e e n g e n e r a l i z e d  generalization traditional debugging should and  debugging  languages which  debugging  for  allow  This  i n RAIDE.  primitive  are  available  the  trace to  from  action. the  user  g e n e r a l i z a t i o n o f debugging  system  to  be  the a l g e b r a i c  extended  to  All thru  concepts  debugging  procedural  deal  aids, with  l a n g u a g e s on  s y s t e m s have been b a s e d . . RAIDE i s  approach t o i n t e r a c t i v e , h i g h - l e v e l symbolic  dumps,  An example o f t h i s  t h e easy i n c l u s i o n o f f u t u r e  different  most p r e v i o u s  of a  aids  procedures.  allow  should  i s the lack  (e.g. , t r a c e s ,  debugging.  a  fresh  Chapter 3.  VI.  Summary and C o n c l u s i o n s  96  RAIDE i s one o f t h e few d e b u g g i n g s y s t e m s t o have  independence  as  p r e v i o u s system  a  primary  have b e e n  design  criterion.  language-dependent  language  Virtually a l l  by d e s i g n o r i m p l e -  mentation,  4.  The RAIDE d e b u g g i n g  than t h a t  l a n g u a g e I s more e x t e n s i v e a n d  o f any p r e v i o u s  compromise  between  special-purpose  an  debugging system. interactive  programming  from system d e s i g n c r i t e r i o n  command  language. 4  (viz.,  Dispel  uniform  represents a  language  and  a  T h i s compromise  results  t h a t t h e s y s t e m be  usable  b o t h i n b a t c h and i n t e r a c t i v e l y ) . 5.  RAIDE i s t h e f i r s t  specifically  as  off-the-shelf  design  future 6.,  language  RAIDE  debugging designed can  RAIDE  debugging  writing  system  designed  system r e s o u r c e .  provides  more  run-time  and  t h a n most p r e v i o u s s y s t e m s .  n o t mask, t h i s  maximum b e n e f i t  I t h a s been  inf.orma.tion so t h a t  from t h e debugging  analysis  the  c o l l e c t i o n s o f programs. an  interface  subroutines  to to  l a n g u a g e f o r which a n i n t e r f a c e  Several  preceding  machine-language be  written  h a s been  user  environment.  RAIDE i s one o f t h e few s y s t e m s w h i c h c a n be u s e d t o  enables  of  implementors.  to f i l t e r ,  provided  Such  s h o u l d r e d u c e t h e implementation burden  potentially  multilingual have  translator  information  obtain  7.  a  interactive  in  defined.  debug systems  subroutines; any  high-level  Chapter 8.  VI.  Language t r a n s l a t o r s w h i c h  supply  information  debugging from B.  Summary and C o n c l u s i o n s  in  is  imperfect.  man  debugging tages.  Foremost  source  detail.  complete  can  Previous cooperation  describe  approach  are  does  over previous  in  a  noninterpretive very  cooperating  demand a t r u n - t i m e ) , o r t e m p o r a r y  program  could  be  language  Nevertheless,  one  have  t r a n s l a t o r s must be  or  to r e f l e c t  a c t i o n s may  RAIDE has a c c e s s  the value of  the user i s  more  unlikely  to  nonsource-language to  remember  to  the r u n - t i m e changes. ,  language-independent of  patches to  made a t r u n - t i m e u s i n g some  ( f o r which  d i s a d v a n t a g e of the  debugging  have  i s an a d v a n c e  difficult  the  programming  using  s h o r t c o m i n g s which  to correct  m o d i f y t h e s o u r c e program  that  the  among t h e s e i s t h a t r u n - t i m e c h a n g e s  i s dubious s i n c e  Another  in  disadvan-  a v a i l a b l e on  changes  limitations  i t must  several  Either  translated  specify  will  RAIDE i s s o m e t h i n g ,  */  i t s development.  this  program  translator).  is  since  language-independence  systems,  "universal"  2.  BAIDE  he e r r s i n a l e a r n e d way. — Arabic proverb  and  This section  environment.  a  of  reguired  and i m p l e m e n t a t i o n o f RAIDE, and  Whereas  (i.e.,  errs,  perfect,  become a p p a r e n t d u r i n g  the  levels  to  Shortcomings  design  the  varying  interfaced  translators.  Nothing  1.  are  s y s t e m s have g e n e r a l l y  /*. When t h e l e a r n e d  be  97  approach  the host source languages t o  foster  confusion.  It  i s  thus  Chapter  V I . , Summary  desirable user  to  provide  must l e a r n .  debugging  using  Nevertheless,  the no  source language an  extended  a  many  users  notation  existing  desire  the  debugging  f o r debugging  language  overhead  appear  of  to  i n  inherently  host  source  system  a  prefer  language.  uses e x a c t l y the Invariably  Since there i s already  f o r "compatibility"  which t h e  learning  commands a t r u n - t i m e .  s u b s e t i s used.  some u s e r s '  98  s e p a r a t e debugging  Besides the i n i t i a l  language,  debugging  and C o n c l u s i o n s  must  be  deviation, seen  as  a  s u b j e c t i v e b i a s . ,. 3.  A third  d i s a d v a n t a g e , which  independent cater  to  either  system,  the  "How  interfaced  that  peculiarities  existing  criticism  i s  do  or future. you  i s inherent  in  i t may n o t a l w a y s of  particular  any  language-  be p o s s i b l e t o  source  languages,  I t a p p e a r s i m p o s s i b l e t o answer t h e  know  that  language  t o RAIDE?" w i t h o u t a c t u a l l y  X  can  really  be  attempting t o define the  interface. S 4.  The  implementation  languages from virtual  the c l a s s  has  effectively  excluded  o f RAIDE d e b u g g a b l e  machine t h u s l i m i t s  interpreted  languages.  t h e scope o f t h e e n t i r e  Osing a  implementa-  tion. 5.  The d e c i s i o n t o implement  limited  slightly  Specifically, w i t h RAIDE. based  on  the c l a s s  translator  o f bugs which and  I t i s not c l e a r , "real"  RAIDE u s i n g  loader however,  machines a d d r e s s t h i s  a virtual  the system  machine h a s can  detect.  e r r o r s c a n n o t be d e t e c t e d that  existing  systems  a r e a a d e q u a t e l y , o r even  Chapter that  VI.  such  errors are s i g n i f i c a n t  The  virtual  use  in  formally  Interfacing fact,  it  may be i m p o s s i b l e  simple The for  their  chosen  accomplish  of the  doable  the  implementation  by  to  design  nontrivial.  i s poor, than  were  interfacing providing  a  package i n s t e a d .  selected  modifications  f o r demonstrating  primarily  are considered the  primarily  system i t  is  no o b v i o u s  As s u c h ,  resource. not  feasibil-  In  When a new  carry  out  traditional construction  for  use like  parser being  translators.  producing  goal..  for  i t i s much  criticized  way o f d e a l i n g w i t h  actually  desired  as a t o o l  t h e q u e s t i o n "Can  Dispel  utterances  to  o t h e r words, how c a n i t be  i n some r i g o r o u s way t h a t RAIDE*s p r i m i t i v e  sufficient Many  writing  implemented,  is  character  t o RAIDE i s  future translators.  RAIDE do x ? " w i t h o u t  "proved"  Such  to incorporate into existing  There  as  N e v e r t h e l e s s , RAIDE i s n o t aimed a t e x i s t i n g  other translator is  prevent i t s  language's  debugging  thesis  I t has been d e s i g n e d  implementing  difficult  for this  but not fundamental,  of the system..  generator  7.  a  difficult  run-time  modiflability.  translators.  any  of  translator  o r e v e n more  language-dependent  translators  with  areas  i f the structure o f the translator  necessary, ity  such  errors.  undefined,  an e x i s t i n g  In  hugs,  user  also  and i n d e t e c t i n g  that i s , the gray  which a r e l e f t  to  o f RAIDE may  machine-dependent  sequence dependencies,  dependencies,  6.  i n comparison  machine i m p l e m e n t a t i o n  detecting  collating  99  Summary and C o n c l u s i o n s  actions are  a l l c o n c e i v a b l e debugging  requests?  debugging  requests  have  thru  examples  of Section III.C.  the  been  shown  Chapter  VI.  Summary and C o n c l u s i o n s  Thus, t h e q u e s t i o n are  becomes one o f p r o v i n q  sufficiently  general  and  has  been  shown  RAIDE i s a t l e a s t  8.  The  thesis been  testing  and  to  no  this  primitives  implement a l l  existing  debugging  theorem, i n some s e n s e  as o t h e r  debugging  systems.  o f t h e work r e p o r t e d  tested.,  The  feedback  71b].  Also,  i n this  implementation  guestions  has of the  concerning  i s t o u s e , which can be a n s w e r e d o n l y by the  has a l s o l e f t overhead  is  satisfaction  Future  T h i s l e a v e s open  obtaining  the implementation  from user  /*  i t i s not u s e r  t h e system  Insufficient  C.  as w e l l d e s i g n e d  design concepts.  pleasant  Lest  to f u l f i l l  the  p r i m a r i l y undertaken t o demonstrate the f e a s i b i l i t y  field  is  Since  s e r i o u s shortcoming  i s that  system how  most  that  extendable  "computable" debugging r e g u e s t s . , system  100  views  of  actual  open t h e q u e s t i o n  i n using  the  system  i t possible to evaluate  users.  a s t o what ( L e s t 71a,  the system  apart  and a e s t h e t h i c c o n s i d e r a t i o n s ?  Directions  Excelsiorl — The  purpose  possible suggest  of  extensions other  fruitful  this to  section RAIDE  motto o f New i s  and  two-fold:  to  describe  i t s implementation,  d i r e c t i o n s i n h i g h - l e v e l debugging  areas  York s t a t e .*/  and t o  which might  be  f o r exploration.  T h e r e a r e numerous ways i n which RAIDE can b e : e x t e n d e d : 1.  RAIDE  ( H a d j 76,  can Vict  be 77].  extended The  to  only  handle  parallel  limiting  factor  processing at present i s  Chapter  SPAM.  VI.  Summary and C o n c l u s i o n s  By i n t r o d u c i n g  descriptor, scope,  and  to  support  straightforward related  system  It  control  spaghetti-stacking  dynamic s t o r a g e ,  extended  2.  by  a process  101  and  expression  parallel  the  and  a  stacks,  control,  SPAM  interesting  to  implementation  of  SPAM., T h i s  might  and a  produce  a  microprogrammed  appease t h e c r i t i c i s m  debugging  overhead  i s i n t h e s i m u l a t i o n o f SPAM, n o t w i t h i n BAIDE  design tion 4.  i s too expensive.  an i m p l e m e n t a t i o n  and s y m b o l i c  o f RAIDE c o n f o r m s  i s both  I t may be p o s s i b l e  procedures.  its  verify  A test  paths  Since  activities,  RAIDE  goal,  is  system  operatingRAIDE'S  Altho  the  the c u r r e n t implementa-  and m a c h i n e - d e p e n d e n t . ,  [Itoh  procedure  and  is  be w o r t h w h i l e .  and d e s i r a b l e  aids  which  that  proper.  77], but r e t a i n i n g  would  with t h i s  testing  i t  m i g h t be u s e d  5.  o f RAIDE  t o extend  73,  RAIDE t o i n c l u d e  Panz 7 6 ] ,  such  i s a r o u t i n e whose s o l e  t h e c o r r e c t n e s s of a n o t h e r  control  values.  nature,  operating-system-  more p r o g r a m t e s t i n g  to  Much o f t h e c u r r e n t  and m a c h i n e - i n d e p e n d e n t [ V i c t  high-level  be  generic-  run-time  system-  be  CURRENT_PROCESS t o BAIDE.  be  Producing  can  I t should then  segment-generic  would  3.  £_ogess  segment  processing.  t o add a p r o c e s s function  stack  testing and  r o u t i n e by  i t  test  intent i s  exercising a l l  o u t on v a r i o u s i n p u t d a t a  debugging  reasonable  as  to expect  are  closely  related  that  one s o f t w a r e  tool  t o a i d both.  is  makes no a t t e m p t  a  debugging  a i d , not a diagnostic  to analyze t h e cause  of an  error.  system. Some  It work  Chapter  VI.  has  been  its  cause  an u n d o  the  The  major p r o b l e m  how  much and  be  accomplished.  be  expanded.  with  is  The and  concerning  entered  of t r a c i n g  possible  an  to  an  error  to  add  such  a  i t may  be  procedures system  i m p l e m e n t an  i s determining  saved  to enable  i s deficient. only  the  thus  user  T h e r e i s a need f o r  va'lues, but  debugging  information  system.,  t o remove them f r o m I t s h o u l d a l s o be  action  Beefing  exactly  be  With  up  has  been  the  list  shown  the t r a n s p u t w i l l  the  Besides system,  1. the  various  this  other areas There  statistics  work  i n the  t o be  extensions and  realm  is a definite  related  to  as of  p o s s i b l e then  to  user  t o be  valuable  also  make  p o s s i b l e t o keep program e x e c u t i o n s t a t i s t i c s between r u n s , enabling cumulative  such  r e s t o r e  t o r e v e r s e e x e c u t i o n of  capability  Z e l k 73 ].  addition.  i n w h i c h RAIDE c o u l d s u c c e s s f u l l y  actions.  a  useful  p o s s i b l e t o implement s a v e : a n d  and  unexecate  Such  of  a  to  not  state  be  effect  an u n d o  action  writing,  facilities,  program.  i t s implementation  area  d i s p l a y  the  primitive  command, may  what i n f o r m a t i o n must be  Transput  f Z e l k 71,  may  process  command t o RAIDE, w h i c h r e v e r s e s t h e  previously  debugging  It  the  102  t o RAIDE.,,  Adding  reading  Conclusions  [ D a v i 75 ].  of  7.  and  done on a u t o m a t i n g  capability  6.  Summary  it thus  maintained. the  existing  debugging  o b s e r v a t i o n s have p o i n t e d  o f d e b u g g i n g which m i g h t be  pursued:  need f o r e m p i r i c a l s t u d i e s t o  c l a i m t h a t debugging systems a c t u a l l y  do  aid  out  validate  significantly  Chapter in  VI.  Summary and C o n c l u s i o n s  t h e program  this  development  area [ B i e r  2.  It  is  taught adequately necessary  on  [Math 74], present.  3. which  Gran  that  to  Debugging  ways is  of  language  largely  programs  written  translator  versus  systems  EAIDE, t h i s  will  can  one  source languages.  This  is  Another  which,  given  a  debugger f o r  analogous  generator  tool  to  the  approaches  in  Design  the  facility,  various  facilitate  debugging  wishes o n l y t o p r o v i d e adequate a  provide  ways  run-time  in  the  followinq  package, hooks  which  debugging.  i n t e n d s t o u s e EAIDE f o r d e b u g g i n g  provide a language-dependent  such  to  research.  discuss  implementors  Whether t h e i m p l e m e n t o r  add  at  of the e x p e r i e n c e s gained i n the implementation of  section  translator  methods  more a d e g u a t e l y ,  parser  Suggestions f o r Translator light  is  process  produces a language-dependent  parser  being  research  debugging  g e n e r a t o r system  i n t h a t language.  writing  More  intuitive  is  useful to users of various  table-driven  mentor  an  t o be s y s t e m a t i z e d  definition,  t e c h n i g u e s are not  conveying  EAIDE a p p r o a c h t o d e b u g g i n g  i s  In  6 6 ] , but much more i s n e e d e d .  programmers.  a p p r o a c h i s t o d e s i g n a debugger  D.  Some work has been done i n  debugging  novice  effective  I t needs  The  process..  75, G o u l 75,  apparent  103  or t o  or i f t h e i m p l e -  f o r someone e l s e  points  should  to  be k e p t i n  mind: 1.,  do n o t throw away t r a n s l a t i o n - t i m e  information too  readily;  Chapter  2.  VI.  Summary and C o n c l u s i o n s  structure  the  104  t r a n s l a t o r such that  information  i s easy to  obtain; 3.  c o d e t h e t r a n s l a t o r so t h a t  i t i s  easy  to  read  and  to  modify; 4.  i f  possible,  object  choose  generate  code  f o ra  hospitable  machine;  5.  t r e a t run-time  6.  write  7.  to  error conditions  run-time l i b r a r y  handling  i n mind;  generate  object  i n a uniform  routines  code  which  with  manner;  debugging  and  error  i s easy t o understand  and t o  m o d i f y ; and 8.  document!  Some o f t h e s e p o i n t s i n f Ashb 7 3 ] . There card  They  is  h a v e been t r e a t e d  w i l l a l l be d i s c u s s e d  a tendency  need  and,  eliminated  for  table information variable  i s often  has  Nevertheless, information to  a  once  the  by  valid  premature  has  been  i s no f u r t h e r  syntactically symbol  once t h e scope b l o c k  o f the  of  abandon-  constraints:  memory f o r t o t a l  discarding  system.  program  languages, v a r i a b l e  implementation  been i n s u f f i c i e n t  debugging  extent  below*  Undoubtedly, i n f o r m a t i o n  i s a major d i f f i c u l t y  run-time  i t  discarded  has been t r a n s l a t e d .  there  as s o o n a s t h e r e  block-structured  ment has been m o t i v a t e d often  in detail  f o r i t s r e t e n t i o n . , F o r example, s o u r c e  code i s g e n e r a l l y analyzed  t o some  among t r a n s l a t o r i m p l e m e n t o r s t o d i s -  translation-time information  apparent  previously  retention.  translation-time  with i n t e r f a c i n g a t r a n s l a t o r Further,  efficiency  and  Chapter  VI.  resource sustain in  Summary and  constraint i n view of  hardware  of  the  arguments  the  being  execution  overall  105  are  "software  technology.  memory i s r a p i d l y translator  Conclusions becoming more d i f f i c u l t  crisis"  E v e n on  and  continuing  minicomputer  r e l e g a t e d to the h i s t o r y  efficiency of  the  entire  advances  systems, hooks.,  s p e e d i s becoming o f l e s s c o n c e r n software  to  limited Also, i n view  development  cycle.  There translator each of For  are  basically  should  symbolic  data  item, the  symbolic  translator  a  p r o v i d e t o a debugging system: d e s c r i p t i o n s o f  o b j e c t c o d e , and each  t h r e e c l a s s e s of i n f o r m a t i o n which  should  d e s c r i p t i o n s o f each i m p o r t a n t  source  data  code broken  item  into  lexic  of the user source  segment tokens.  program,  the  provide i t s :  a.  identifier  b.  data type  c.  lexic  name; (e.g., v a r i a b l e or c o n s t a n t ) ;  ( l e v e l , order)  pair,  or  other  address  specifica-  tion; d.  scope with  e.  type, ated  r e s p e c t to procedures  including  range of v a l u e s  and  subscript  known, f o r an a r r a y ;  For  initial  or  each important  translator  blocks;  f o r s c a l a r and  enumer-  information,  where  types;  f. , dimension  g.  and  should  constant  bounds  and value,  i f known.  c o d e segment o f t h e u s e r  provide i t s :  source  program,  the  Chapter  It  VI.  106  label  name, i f p r e s e n t ;  b.  segment t y p e  (e.g., statement  or  c.  scope  i t s relationship  to other  d.  p a r a m e t e r and  e.  bounds w i t h i n t h e o b j e c t c o d e a r e a  (i.e.,  i s convenient, the  should  the  Conclusions  a.  supply It  Summary and  r e s u l t t y p e s , i f any;  a l t h o not e s s e n t i a l ,  debugging system  be  procedure);  decomposed  into  for  tokens  segments);  and or  file.  the  with the user lexic  code  translator  source and  program code.,.  associated  c o r r e s p o n d i n g o b j e c t c o d e segment d e s c r i p t i o n s .  the  information listed  descriptors  and  8hen  RAIDE program  designing  translator, will  the  above i s p r o v i d e d  be  the  for  the  to bear  implementor,  part  For  of  structure in  mind  of  how  o r someone e l s e ,  to provide  the  design  t h e symbol t a b l e ,  diate user The  information  Ideally,  describing  symbol  it  t h e symbol a l l program  information  was  table data  a problem  t o RAIDE.  easy  should  d e b u g g i n g system.;  translator  need.,  the s t r u c t u r e  m o d u l a r i z a t i o n , and  table  in a centralized,  which, g i v e n  run-time  translator  importance:  will  the  interme-  program r e p r e s e n t a t i o n . „. translator  format.  are of s p e c i a l  language it  Three of  SPAM  difficult  i n f o r m a t i o n which a debugging system  of  RAIDE,  the  a  translation-time areas  with  specifications.,  internal  i t i s important  as  to  be  should  contain  t o a c c e s s , and p o s s i b l e to  a l l symbol  understandable  w r i t e one  as an argument, g e n e r a t e s items  The  i n a format  Separate  o f symbol  in interfacing  BCPL v e c t o r s a r e  a  file  acceptable to  decentralization  encountered  module  used  the  table  the  BCPL-V  to  store  C h a p t e r VI.  Summary and  different  symbol  due  absence o f  to  the  which the  The  Conclusions  attributes. record  translator  itself  decomposition  important consideration. (viz., and  lexic  code  easier  the The  Such  and,  benefit  greatly  candidate nal  from  traditional analysis,  be  instance,  is  into  language  in  modules i s  an  translation semantic  represented  phases  processing,  by  separate  makes u n d e r s t a n d i n g  Both  the  BCPL and  locally  In  &sple  fact, several  b e c a u s e of  to  translators other  t h e i r poor i n t e r -  available Pascal  translator,  a o n e - p a s s t r a n s l a t o r whose s p a g h e t t i - l i k e  m i n g l i n g of  scanning,  analysis,  semantic  generation  make  virtually  u n i n t e l l i g i b l e to  it  the  makes m o d i f y i n g i t t o i n t e r f a c e  this organization.  The  way  the  translator  t r a n s l a t o r s were r e j e c t e d  organization.  BCPL,  separation  hence,  debugging system e a s i e r .  in  done t h i s  written.  should  routines.  translator  is  syntactic  generation)  translator  a  scanning,  U n d o u b t e d l y i t was  types  of  107  processing,  inter-  and  a l l but  for  code hearty  souls.  Constructing during ging  an  translation  system.  Both  greatly the  programs i n t o g r a p h i c semantic r o u t i n e s should diate  be  the  run-time  user  program  facilitates and  Asple  representation  i n t e r f a c i n g to a translators  intermediate representations code  to  write  representation important  BCPL  and  possible  all  intermediate  as  program debugging  an  generators one  on  operate.  a  nongraphic  which  the  file  c o d e segments i n a f o r m a t system.,  transform both  Ideally,  module w h i c h , g i v e n  argument, g e n e r a t e s a  debug-  i t  interme-  describing  acceptable  to  intermediate  Chapter  VI.  Summary  and  Conclusions  108 i  representation  is  s t r u c t u r e of the  less  source  Altho i t should coded  in  logically  should  go  variable  without  translators BCPL)  (viz.,  Pascal)  should  found  to  the  Asple  be  In  two  If  at  all  debugging.  RAIDE f o r j u s t machine  detection  systems  with  well  the  be  manner.  In  code  documentation are  so  implementation "structured"  code which  many  language  Regrettably,  the  should  I t i s indefensible  BCPL and  coded,  should  Pascal  language such  was  translators  generator  for  e x p l a i n s why  c h a n g e t h e o b j e c t machine c o d e  for  this is  with of  machine  with the  advent  a  translator  machine  i t  the was  generated  the  reason  (cf.,  code o f new  the host goals  implementor  which  is  Section  the  a  of  debugging,  errors.  Arguments  i s inefficient  IV,C).  If should  pseudomachine in that  are r a p i d l y  hardware t e c h n o l o g i e s such  to  implementation  implementor  machine  should  hospitable  introduced i n t o the  inhospitable,  run-time  virtual  the  SPAM was  t o s i m u l a t e on  concordant  that there  p o o r l y coded.  possible,  run-time  hesitate  static  weeks!  o b j e c t code  object  a  contrast,  was  generate  of  be  to completely  only  indeed  internal  student-oriented,  case  translator  mnemonic, t h e  in existence s t i l l .  for  a  available.  possible in  and  be  adeguate  I t i s lamentable  (viz.,  locally  t h e r e f o r e , easy-to-modify  and  p o o r l y coded t r a n s l a t o r s t h a t the  saying, a translator  names s h o u l d  indented,  exist.  the  program.  a r e a d a b l e and,  particular, be  d e s i r a b l e s i n c e i t obscures  the not more  particular  the  interpreting losing as  ground  micropro-  Chapter  VI.  Summary and  gramming. run-time  Conclusions  A t r a n s l a t o r implementor*s best e f f o r t s at p r o v i d i n g debugging  a i d s can  be  which i s a n t a g o n i s t i c toward  To treat  facilitate  a l l run-time  example,  thru  reasonable condition has  avoided tor in  a  error  should  be  should an  terminal  s i n c e they  values  extremely  difficult  unstable  machine s t a t e .  points corresponding  source such  by  the  program  code.  run-time  Ideally,  Similarly,  breaks  interface  system.  library  The  can  The  breaks  i s never  be  left  partially I t can  be  with  an  deal  should  occur  statements  only  in  the  machine s t a t e  reexecuted  be  implemen-  (e.g.,  to  between  at  be  run-time  r o u t i n e s which t h e  cleanly  with  r o u t i n e s should  run-time  errors  directly  into  interface  between t h e o b j e c t code and  the  run-time.  in registers).  library  mentor p r o v i d e s s h o u l d  i n t h e same  error  recovery.  run^-time  Specifically,  once t h e  program  system  a  error  e r r o r s should  I t i s p r e f e r a b l e t h a t the  correction or  any  at  error  error  for  each  debugging.  be l e f t  should  Additionally,  logically  executing  t h a t the o f f e n d i n g statement  following error  machine  manner,  for  user  debugging  to  uniform  nonrecoverable)  not  for a  object  handler.  to a run-time  should  an  instituted  a l s o i n s u r e t h a t an due  a  proceed  (i.e.,  frustrate  unstable state  in  common  t h a t e x e c u t i o n can  of  by  debugging, the implementor  errors detected  computed  at  run-time  recovery so  thwarted  debugging.  been c o r r e c t e d o r p a t c h e d  presence  109  manner  o b j e c t program.,  as  error  It i s also library  the  imple-  debugging  d e t e c t and checks  compiled  convenient routines  treat  i f the is  the  Chapter  VI.  Summary  same as  t h a t between t h e  avoids s p e c i a l  and  cases  o b j e c t c o d e and  go  about  the ease of i n t e r f a c i n g  preferable that having  to  example, t h e present  a l l data  handle  values  numerous  with  and  as  The  generators  also  between  the  should  that there source  i s no  and  understand run-time  the  debugging, run-time  behavior  debugging i t  than  and  Last, should  not  translators, rate the  at  and  fired  i n an  fails  is  obvious  difficult  executing  provided,  certainly  not  correspondence  for  conflict.  than  the  To  Any  to adequately  industrial  the  to  goals  of  facilitate at  optimi-  implementor  and  in  be  Asple  inaccu-  interfacing  implements  document i t s h o u l d failed  accurate  BCPL and  at best  programmer who  environment, or  user  goal of  This sorry s t a t e g r e a t l y hindered to RAIDE.  too  usual.  both  nonexistent  If  more i n f o r m a t i o n  least, a translator  Hith  object  program.  w h e r e a s the  may  constants.  t h e v a l u e o f w e l l - w r i t t e n and  was  For  differently  program.,, The  t o supply  less information  documentation  translators  ware  i t  documentation.  worst!  run-time.  a v o i d o p t i m i z i n g the  optimization  underestimate  implementation  at  avoid  F o r t r a n COMMON v a r i a b l e s  l o n g e r an  of the  i s normally  but  cases  It is  to  l o c a l v a r i a b l e s and  i s often necessary  z a t i o n i s to provide  uniformly  o b j e c t v e r s i o n s o f the  much r e a r r a n g e m e n t o c c u r s ,  system.  o b j e c t code a l s o  i f c o d e f o r them i s g e n e r a t e d  program v a l u e s s u c h  such  debugging  This  a debugging system.  be a c c e s s e d  from o t h e r  program  the  producing  special  BCPL g l o b a l v e c t o r  difficulties  code  user subroutines.  which o n l y c o m p l i c a t e  flow t h e c o d e g e n e r a t o r s affects  110  Conclusions  shot an  soft(i.e.,  academic  Chapter  VI.  environment). modified, It  No one s h o u l d  or a t l e a s t  looked  i s hoped t h a t t h i s  constructed benefit  Summary and C o n c l u s i o n s  will  the o v e r a l l  not o n l y  111  assume t h a t a program w i l l a t , by someone  a d v i c e on how  else.  translators  b e n e f i t run-time  quality of user-oriented  n e v e r be  should  be  debugging, but a l s o software.  112  Glossary For t h e c o n v e n i e n c e o f t h e r e a d e r , d e f i n i t i o n s a r e p r o v i d e d below f o r t h e d e b u g g i n g t e r m i n o l o g y used i n t h i s t h e s i s . Altho an a t t e m p t h a s been made t o c o n f o r m t o t h e s t a n d a r d i n f o r m a t i o n p r o c e s s i n g d e f i n i t i o n s , i n e v i t a b l y some v a r i a t i o n s i n u s a g e have arisen.  ANALYSIS INFORMATION: i n f o r m a t i o n used t o examine t h e program execution, f o r example, variable or profiles.  state of execution  BREAKPOINT: a p a r t i c u l a r l o c a t i o n i n a program o r a particular time d u r i n g e x e c u t i o n a t which some d e b u g g i n g a c t i o n i s t o be i n i t i a t e d . BOG: any e r r o r which i s a s s o c i a t e d d i r e c t l y o r i n d i r e c t l y w i t h a computer, a computer program, information entering or l e a v i n g a c o m p u t e r , a c o m p u t e r o p e r a t o r o r programmer, o r anyone related t o o r a n y t h i n g a s s o c i a t e d with any person engaged i n a n o c c u p a t i o n w h i c h u s e s c o m p u t e r s . DEBUGGING: t h e p r o c e s s o f r e c o g n i z i n g , i s o l a t i n g , and c o r r e c t i n g m i s t a k e s i n some c o m p u t e r program. I n t h i s t h e s i s t h e term is restricted to the detection of logic and semantic errors. The d e t e c t i o n o f s y n t a c t i c e r r o r s i s n o t r e f e r r e d t o as debugging. DEBUGGING SYSTEM: a c o l l e c t i o n the debugging p r o c e s s . ,  o f software t o o l s  which  a i di n  DUMP: a d i s p l a y o f some a s p e c t o f t h e s t a t e o f a p r o g r a m . The two c l a s s e s o f dumps a r e : memory (or "core") dumps and variable dumps. The l a t t e r a r e of primary concern i n h i g h - l e v e l d e b u g g i n g s y s t e m s and a r e o f two t y p e s : s n a p s h o t and postmortem. ENTOMOLOGY: t h e s t u d y  o f bugs  by o b s e r v a t i o n f V a n T 74:154 ].  EXECUTION PROFILE: a p r o f i l e o f the freguency s t a t e m e n t s o r p r o c e d u r e s w i t h i n a program., FLOW TRACE: a t r a c e of statement numbers program. LOGIC ERROR: a d e f i c i e n t  t h e program encountered implementation  labels during  of execution of or source-level execution of a  o f an a l g o r i t h m .  POSTMORTEM DUMP: a dump o f a program a t i t s p o i n t termination.  of  abnormal  113  Glossary  PROFILE: a p o s t e x e c u t i o n d i s p l a y o f t h e a c t i v i t y o f some a s p e c t of a program, primarily beneficial for testing and optimization purposes. The two c l a s s e s o f p r o f i l e s a r e : variable profiles and e x e c u t i o n (or flow) profiles. Profiles c a n e i t h e r be c o m p l e t e f o r t h e e n t i r e program o r s e l e c t i v e w i t h i n a p o r t i o n o f t h e program, SEMANTIC ERROR: a m i s u n d e r s t a n d i n g i n t h e use o f some i n the source language. SNAPSHOT DUMP: a dump point o r time.  o f an e x e c u t i n g  program  construct  at a s p e c i f i e d  SUBROUTINE TRACE: a t r a c e o f t h e s u b r o u t i n e s invoked (possibly including t h e i r p a r a m e t e r and r e s u l t v a l u e s ) d u r i n g e x e c u t i o n o f a program. SYMBOLIC DEBUGGING: t h e d e b u g g i n g o f a program s o u r c e - l e v e l names and c o n s t r u c t s o f t h a t TESTING: the process of verifying that a behaves according t o i t s s p e c i f i c a t i o n s .  i n terms program.  of  computer  the  program  TRACE: a d i s p l a y o f t h e e x e c u t i o n p a t h o f a program., The three classes of t r a c e s a r e : f l o w t r a c e s , v a r i a b l e t r a c e s , and subroutine traces. T r a c e s c a n e i t h e r be c o m p l e t e f o r the entire program or selective within a portion o f the program. TRACEBACK: a t r a c e of the procedure invocation program a t a p a r t i c u l a r p o i n t i n t i m e .  state  VARIABLE PROFILE: a profile o f t h e number o f a c c e s s e s changes t o the v a r i a b l e s i n a program.  of  a  of o r  ;  VARIABLE TRACE: a t r a c e o f t h e names and v a l u e s o f e a c h a c c e s s e d o r c h a n g e d d u r i n g e x e c u t i o n o f a program.  variable  114 References  and  Annotated  Bibliography  [Abra  77]  Abramson, Harvey David; Appelbe, W i l l i a m F r e d e r i c k ; and J o h n s o n , Hark S c o t t . "Assaulting the Tower of B a b e l : E x p e r i e n c e s w i t h a T r a n s l a t o r W r i t i n g System". Technical Report 77-12, Department of Computer Science, University of British Columbia, 1977 November. 11pp.  (Appe  78]  Appelbe, William Frederick., A SemanticRepresentation for Translation of Hiih^Li5jl~~;;'Alaii ^bffliGLanguages. Doctoral Dissertation: Department " o f Computer S c i e n c e , University of British Columbia, 1978 August. 144pp. :  [ Ashb  73]  Ashby, G o r d o n ; S a l m o n s o n , L o r e n ; and H e i l m a n , R o b e r t . Design of an interactive debugger f o r FORTRAN: MANTIS. Software — Practice and Ex.Egrie.ncg, 3:1 (1973 J a n u a r y - M a r c h ) , 65-74." D e s c r i b e s an i n t e r a c t i v e debugging system interfaced to the Fortran language, i n w h i c h no m o d i f i c a t i o n s a r e needed t o t h e s o u r c e program a t t r a n s l a t i o n - t i m e ; a l l d e b u g g i n g c o d e i s added by t h e d e b u g g i n g s y s t e m at r u n - t i m e . N e v e r t h e l e s s , t h e l a n g u a g e t r a n s l a t o r was m o d i f i e d t o p r o v i d e e x t e n s i v e run-time information. The a u t h o r s g i v e some g u i d e l i n e s t o l a n g u a g e i m p l e m e n t o r s on what i n f o r m a t i o n i s needed by a d e b u g g i n g system,. ;  [ B a i r 75]  Baird, G e o r g e N. Program debugging u s i n g COBOL »74. AFIPS C o n f e r e n c e P r o c e e d i n g s , 44 (NCC 1 9 7 5 ) , 313-318. Describes the l a n g u a g e - p r o v i d e d debugging f a c i l i t i e s i n c o r p o r a t e d i n t o t h e 1974 ANSI Cobol Standard. . These include the c a p a b i l i t y t o s u p p r e s s t h e e f f e c t s o f added d e b u g g i n g s t a t e m e n t s at e i t h e r t r a n s l a t i o n - or run-time, s p e c i a l debugging SECTIONS w h i c h a c t as i n t e r r u p t p r o c e d u r e s , and a g l o b a l DEBUG-ITEM which c o n t a i n s i n f o r m a t i o n c o n c e r n i n g t h e s t a t e o f program e x e c u t i o n . [Ball  77]  Ballard, Alan John.. "UBC DEBUG: The Symbolic Debugging System". Computing C e n t r e , U n i v e r s i t y of B r i t i s h C o l u m b i a , 1977 September., 126pp. Describes the interactive Symbolic Debugging System (SDS) a v a i l a b l e under t h e MTS o p e r a t i n g s y s t e m t o a i d i n t h e d e b u g g i n g o f IBM System/360/370 m a c h i n e - l a n g u a g e p r o g r a m s . / I t has been e x t e n d e d t o h a n d l e F o r t r a n , P L / I , and PL360 s o u r c e p r o g r a m s i n a somewhat s y m b o l i c manner. The u s u a l machine-level f a c i l i t i e s , as w e l l as a r u d i m e n t a r y programmable b r e a k p o i n t mechanism, a r e provided.  R e f e r e n c e s ana A n n o t a t e d  Bibliography  [ B a l z 69]  B a l z e r , R o b e r t H. EXDAMS - - E x t e n d a b l e D e b u g g i n g and M o n i t o r i n g System, AFIPS C o n f e r e n c e P r o c e e d i n g s , 34 (SJCC 1969) , 567-580. D e s c r i b e s t h e EXDAMS o n l i n e d e b u g g i n g s y s t e m f o r P L / I programs. No m o d i f i c a t i o n s a r e made t o t h e l a n g u a g e t r a n s l a t o r ; i n s t e a d , a p r e p r o c e s s o r i n s e r t s i n t o t h e s o u r c e code c a l l s t o a run-time monitoring package. The r u n - t i m e package keeps a h i s t o r y f i l e which e n a b l e s reverse program execution., The package also p r o v i d e s r u n - t i m e d i s p l a y o f t h e s o u r c e c o d e , f l o w a n a l y s i s , and motion-picture display of variables. A l l these facilities, however, a r e a v a i l a b l e o n l y a f t e r t h e program h a s e x e c u t e d and t h e h i s t o r y f i l e h a s been constructed; the system does not support i n t e r a c t i v e debugging. [Balz 74]  B a l z e r , R o b e r t M. A language-independent programmer's interface. AFIPS C o n f e r e n c e P r o c e e d i n g s , 43 (NCC 1 9 7 4 ) , 365-370. Describes a programmer's e n v i r o n m e n t which c a n be i n t e r f a c e d t o any i n t e r p r e t i v e , i n t e r a c t i v e l a n g u a g e which c a n p e r f o r m single statement evaluation (e.g., t h e EVAL f u n c t i o n o f L i s p ) . The system provides an e d i t o r with prettyprinting and undoing capabilities, the a b i l i t y t o e d i t p r e v i o u s commands, a n d p r o grammable b r e a k p o i n t s . The s y s t e m i s written in INTERLISP, using the protocol o f t h e ARPANET t o i n i t i a l l y i n t e r f a c e w i t h t h e ECL programming system.  [ Baue 7 3 ]  Bauer, F r i e d r i c h L u d w i g ( e d i t o r ) . A d v a n c e d C o u r s e on Software Engineering. S p r i n g e r - V e r l a g , 1973? ~545pp. ( I S B N 3-540-06185-1 ]  [ Baye 6 7 ]  Bayer, R u d o l f ; G r i e s , D a v i d ; P a u l , M.; and Wiehle, H.B. The ALCOR I l l i n o i s 7090/7094 p o s t mortem dump. C o m m u n i c a t i o n s o f t h e ACM, 10:12 (1967 December), 804-8087 D e s c r i b e s an A l g o l 60 postmortem dump facility which incurs almost no r u n - t i m e overhead u n l e s s a program f a i l u r e o c c u r s . The l a n g u a g e t r a n s l a t o r , however, has been c h a n g e d s u b s t a n t i a l l y t o p r o d u c e i n f o r m a t i o n a c c e s s i b l e t o t h e r u n - t i m e dump s y s t e m . [Bern 68]  B e r n s t e i n , W i l l i a m A.; and Owens, James T. Debugging in a time-sharing environment. JLIIES £2Sference P r o c e e d i n g s , 33: 1 (FJCC 1968) , 7-14. Discusses t h e need f o r a " d e b u g g i n g s u p p o r t s y s t e m " i n d e p e n d e n t o f an o p e r a t i n g system f o r u s e by s y s t e m s programmers i n debugging an e x e c u t i n g time-sharing operating system. The a u t h o r s a l s o d i s c u s s t h e p o s s i b i l i t y o f a debugging environment w h i c h i s h e u r i s t i c and, t h e r e b y , s e l f - d e b u g g i n g .  R e f e r e n c e s and  Annotated  Bibliography  116  [ B i e r 75]  B i e r m a n , A.H.; Baum, R.I.; and S i l v e r m a n , 8. Trace i n f o r m a t i o n a s an a i d t o d e b u g g i n g . SIGGSE B u l l e t i n , 7:3 (1975 S e p t e m b e r ) , 44-49. Reports the r e s u l t s o f an e x p e r i m e n t s u p p o r t i n g t h e c l a i m t h a t i n t e r p r e t i v e e x e c u t i o n of machine code which enables tracing information a t a b n o r m a l t e r m i n a t i o n i s a b e t t e r t o o l f o r debugg i n g t h a n normal e x e c u t i o n without t r a c e s . ,  [ B l a i 71]  Blair, James Curtis. Extendable non-interactive debugging. I n [ R u s t 71 ], 93-115. „ Describes the commands and i n t e r n a l o r g a n i z a t i o n o f t h e PEBUG debugging system. The s y s t e m c o n t a i n s t h r e e b a s i c components: a breakpoint/interpreter, a command s c a n n e r , and command p r o c e s sing routines.  [ B o h r 72]  Bobrow, Daniel Gureasko. Requirements f o r advanced programming s y s t e m s f o r l i s t p r o c e s s i n q . Comf ftnlcat i f i i i s of t h e ACM, 15:7 (1972 J u l y ) , 618-6277 Expounds t h e v i r t u e s o f the f a c i l i t i e s p r o v i d e d by t h e INTERLISP system {formally known a s BBN-LISP) t o p r o v i d e t h e proqrammer w i t h an e n v i r o n m e n t c o n d u c i v e t o proqram construction, debuqq i n q , t e s t i n q , and e d i t i n g .  [ B o u l 72]  Boulton, Peter I . P.; and Jeanes, D a v i d L. The structure and p e r f o r m a n c e o f PLUTO, a t e a c h i n g o r i e n t e d P L / I c o m p i l e r s y s t e m . , INFOR, 10:2 (1972 June), 140-153. Briefly describes a student-oriented PL/1 translator which generates code for a PL/I-compatible virtual machine whose e x e c u t i o n i s i n t e r p r e t e d . The a u t h o r s s t r e s s t h e a d v a n t a g e s f o r r u n - t i m e d e b u g g i n g o f i n t e r p r e t i n g s u c h an i n t e r m e d i a t e c o d e .  [Brad  68]  B r a d y , P a u l T. W r i t i n g an o n l i n e debuqqinq proqram for the experienced user. C o m m u n i c a t i o n s o£ the. ACM, 11:6 (1968 June) , 423*427. Stresses the desirability of minimizinq typinq, correctinq errors, and producinq terse error messaqes in typewritero r i e n t e d , machine-language debugging systems. , [ B r o w 73 ]  Brown, A r t h u r Robert; and Sampson, W.A. Program Debugging. Computer Monographs: Macdonald and Company L i m i t e d , and American Elsevier Publishing, 1973. 166pp. [ I S B N 0-356-04267-7 and 0-444-19565-3] Contains a s u p e r f i c i a l d e s c r i p t i o n of debugging techniques as r e l a t e d t o b u s i n e s s a p p l i c a t i o n s and e n v i r o n m e n t s .  R e f e r e n c e s and [Brow 7 4 ]  [Bull  72]  [Chea  72]  Annotated  Bibliography  117  Brown, Peter J. Macrp P r o c e s s o r s and T e c h n i g u e s f o r ________ Software. -Hiley S e r i e s ~ i n Computing! ~John Wiley and Sons L i m i t e d , 1974, 244pp. [ISBN 0-47111005-1]  Bull, G.H. Dynamic debugging i n BASIC. Computer ______!/ 15:1 (1972 F e b r u a r y ) , 21-24. D e s c r i b e s a r u d i m e n t a r y d e b u g g i n g f a c i l i t y added t o B a s i c on t h e I C L 803. Cheatham, T.E., J r . ; and W e g b r e i t , Ben. A laboratory for the study of automating programming., AFIPS C o n f e r e n c e P r o c e e d i n g s , 40 (SJCC 1972), 11-21. D i s c u s s e s t h e need f o r providing programming-oriented systems which can assist s u b s t a n t i a l l y i n t h e d e v e l o p m e n t and m a i n t e nance o f p r o g r a m s .  [ C l a p 74]  C l a p p , J.A,; and S u l l i v a n , J . E. Automated m o n i t o r i n g of s o f t w a r e g u a l i t y . MIES C o n f e r e n c e P r o c e e d i n g s . 43 (NCC 1974) , 337-341. D e s c r i b e s Simon, an a u t o m a t e d a i d i n t e g r a t e d i n t o an operating system to monitor t h e o v e r a l l p r o g r e s s o f a programming p r o j e c t ' s development. The s y s t e m a u t o m a t i c a l l y r e t a i n s a history o f a l l programming bugs by c a t e g o r y .  [Clar  74]  C l a r k , B. L. ; and Ham, F. J.B. "The P r o j e c t SUE System Language Reference Manual". Technical Report CSRG-42, Computer Systems R e s e a r c h G r o u p , University o f T o r o n t o , 1974 September. 97pp.  [Conr 70]  Conrow, K e n n e t h ; and S m i t h , R o n a l d . G. NEATER2: a P L / I s o u r c e s t a t e m e n t r e f or m a t t e r . Cora i_iaisati<aa_ S f t h e ACM, 13: 11 (1970 November), 669-675. a PL/I prettyprinter which has an o p t i o n t o i n s e r t the s o u r c e t o p r o v i d e a r u n - t i m e f r e g u e n c y c o u n t .  Describes code i n t o [Conr 76]  Conradi, Reidar. Further PASCAL, particularly as a language. SIGPLAN Notices, 8-25.  critical comments on systems programming 11:11 (1976 November),  [Conw 7 3 ]  Conway, R i c h a r d W a l t e r ; and W i l c o x , Thomas R. Design and i m p l e m e n t a t i o n o f a d i a g n o s t i c c o m p i l e r f o r P L / I . Communications of the ACM, 16:3 (1973 March), 169-179.  B e f e r e n c e s and  Annotated B i b l i o g r a p h y  118  P r e s e n t s an o v e r v i e w o f t h e d e s i g n c r i t e r i a and implementation structure of the PL/C d i a g n o s t i c t r a n s l a t o r and b r i e f l y d e s c r i b e s t h e d i a g n o s t i c e x t e n s i o n s t o t h e PL/I l a n g u a g e implement e d i n PL/C. [Conw 7 7 ]  Conway, B i c h a r d Walter; Moore, C h a r l e s , J r . ; and Worona, S t e v e n L. An i n t e r a c t i v e v e r s i o n o f t h e PL/C compiler. P r o c e e d i n g s o f the A C H A n n u a l Coaferenee, S e a t t l e , W a s h i n g t o n (1977 October)7~308-3T4. D i s c u s s e s t h e c o n c e p t u a l model o f a t e r m i n a l as an "internal procedure" i n an interactive system for a block-structured language. S p e c i f i c a l l y , d e b u g g i n g commands a r e viewed as an extended subset of the host l a n g u a g e , which i s PL/C i n t h i s case. PL/C p r o c e d u r e s i l l u s t r a t e t h e a c t i o n s o f the debugging environment.  [ C r e s 70]  Cress, P a u l H.; Dirksen, P a u l H. ; and Graham, J . Wesley. £0STEAM J.V with WASfSI and WAJTf.IV. P r e n t i c e - B a l l , 1970. 447pp. f l S B N 13-329433-1]  65]  Crisman, P. A. ( e d i t o r ) . The S S S f i S i i s i S Sl;S§~Sh3rin§ S y s t e m ; A Programmer's G u i d e . , The H I T ~ ~ P r e s s , 1965. S e c t i o n AH.8, 39pp.  [Cris  [ C u f f 72]  C u f f , E.N. A conversational compiler f o r f u l l PL/I. Computer J o u r n a l , 15:2 (1972 May) , 99-104. , D e s c r i b e s some o f t h e c a p a b i l i t i e s of the IBM PL/I Checkout Compiler and i t s implementation. It i s interpretive, provides numerous r u n - t i m e c h e c k s and diagnostics in source language terms, can set checkpoints and r e s t a r t e x e c u t i o n , and a l l o w s s o u r c e - l e v e l program m o d i f i c a t i o n s a t r u n - t i m e . . The system is highly language-dependent.  [ D a v i 75]  D a v i s , A l a n Mark; T i n d a l l , M i c h a e l H.; and Wilcox, Thomas B. Interactive error diagnostics for an i n s t r u c t i o n a l programming s y s t e m . SIGCSE Bulletin, 7: 1 (1975 F e b r u a r y ) , 168-171. B r i e f l y d e s c r i b e s a d o c t o r a l p r o j e c t by D a v i s c o n s i s t i n g o f "an a n a l y s i s system f o r e x e c u t i o n - t i m e e r r o r s " . The s y s t e m e x e c u t e s p r o g r a m s i n t e r p r e t i v e l y ; when an e r r o r i s d e t e c t e d , an analysis system attempts t o d i a g n o s e t h e s o u r c e o f the e r r o r by r e v e r s e program e x e c u t i o n and i n t e r a c t i o n w i t h t h e u s e r .  (Ehrm  72]  Ehrman, John E. „, System d e s i g n , machine a r c h i t e c t u r e , and d e b u g g i n g . SIGPLAN N o t i c e s , 7:8 (1972 August), 8-23.  R e f e r e n c e s and A n n o t a t e d  Bibliography  119  Places much o f t h e blame f o r t h e p r e s e n t " s o f t w a r e c r i s i s " pn poor system d e s i g n s and machine architectures which do n o t enhance program d e b u g g i n g . The a u t h o r p r e s e n t s h i s i d e a s on how m a c h i n e s s h o u l d be d e s i g n e d t o f a c i l i t a t e d e b u g g i n g .  [Evan 65]  Evans, Thomas G.; and D a r l e y , D. L u c i l l e . DEBUG -an e x t e n s i o n t o c u r r e n t o n l i n e d e b u g g i n g technigues. C o m m u n i c a t i o n s o f t h e ACJS, 8:5 (1965 May) , 321-326. D e s c r i b e s t h e DEBUG t y p e w r i t e r - o r i e n t e d , m a c h i n e - l a n g u a g e debugging s y s t e m f o r t h e U n i v a c M-460. The s y s t e m i s n o t e w o r t h y f o r two r e a s o n s : p a t c h e s c a u s e dynamic r u n - t i m e program relocation and p a t c h e s t o t h e machine code c a u s e a u t o m a t i c u p d a t i n g o f t h e source code.  [Evan 66]  Evans, Thomas G.; and D a r l e y , D. L u c i l l e . On-line debugging t e c h n i g u e s ; a survey. , M I P S Conference P r o c e e d i n g s , 29 (FJCC 1966), 37-50. ~ S u r v e y s c u r r e n t (1966) online debugging t e c h n i g u e s f o r both machine-language and h i g h - l e v e l l a n g u a g e s y s t e m s . The a u t h o r s s t r e s s the importance of the user having f u l l f l e x i b i l i t y , the user being able t o make m o d i f i c a t i o n s i n t h e n o t a t i o n o f t h e l a n g u a g e o f t h e program, and a u t o m a t i c s o u r c e program modificat i o n i n p a r a l l e l t o m o d i f i c a t i o n s o f t h e t r a n s l a t e d program.  [Ferg  63]  F e r g u s o n , H. E a r l ; and B e r n e r , E l i z a b e t h . Debugging systems a t t h e s o u r c e language l e v e l . Communications o f t h e ACM, 6:8 (1963 A u g u s t ) , 430-432. D e s c r i b e s t h e BUGTRAN d e b u g g i n g s y s t e m , a p r e d e c e s s o r p f EXDAMS, w h i c h u s e s a p r e p r o c e s s o r t o make modifications to Fortran programs.  [Ferl  71]  Ferling, H.-D.; S c h m i t t , B.; Strelen, Chr.; T h i e l m a n n , H.; and H a l d s c h r a i d t , H. Objektzeitfehlerprflfung b e i einem Testlaufcompiler ffJr A l g o l 60. Angewandte I n f o r m a t i k . 4 (1971 A p r i l ) , 165-168, D e s c r i b e s t h e t e c h n i g u e s u s e d i n t h e ALCOR A l g o l 60 translator to detect a t run-time s u b s c r i p t s out o f range, undefined v a r i a b l e s , r e c u r s i v e p r o c e d u r e , c a l l s , and i n c o m p a t i b l e p a r a m e t e r s . The system uses both translation-time generated t a b l e s and i n f o r m a t i o n s t o r e d w i t h i n t h e machine c o d e , and t a k e s advantage o f t h e p e c u l i a r i t i e s o f t h e IBM 7090 h a r d w a r e .  [ F o n g 7 3 a ] F o n g , E l i z a b e t h N. "A S e t o f Debugging a n d M o n i t o r i n g F a c i l i t i e s t o Improve t h e D i a g n o s t i c C a p a b i l i t i e s of a Computer". Technical Bote TN-763, National Bureau of Standards, W a s h i n g t o n , D. C., 1973 March. 20pp. [ (NTIS) COM-73-50314]  R e f e r e n c e s and  Annotated  L i s t s and d e s c r i b e s a should be available run-time to f a c i l i t a t e  Bibliography  120  number of diagnostic facilities which at t r a n s l a t i o n - t i m e , l i n k / l o a d - t i m e , and debugging.  [Fong 73b] Fong, E l i z a b e t h N. Improving c o m p i l e r d i a g n o s t i c s . D a t a m a t i o n , 19:4 (1973 A p r i l ) , 84-86. A condensation o f [Fong 73a].  [ F o u l 75]  F p u l k , C l i n t o n R. T h e DO t r a c e : a s i m p l e and effective method for debugging GOTO-free programs. SIGPLAN N o t i c e s , 10:9 (1975 S e p t e m b e r ) , 11-18. Describes a f o r m o f program t r a c i n g , c a l l e d t h e D O - t £ a c e , which i s claimed to be simpler and more effective than"* f u l l or s e l e c t i v e t r a c i n g o f g o t o - l e s s programs.  ( G a i n 69]  G a i n e s , R. S t o c k t o n . The Debugging o f Computer £roarams. D o c t o r a l D i s s e r t a t i o n : Department o f E l e c t r i c a l Engineering, Princeton University, 1969 August. 170pp. [ UMI o r d e r number 70-14,.209] G i v e s a h i s t o r i c a l o v e r v i e w o f d e b u g g i n g methods, primarily as related to machine-language debugging systems.^ The author s t r e s s e s the importance o f certain methods and suggests new directions, most o f which have now been i m p l e m e n t e d i n v a r i o u s systems.  [Gall  74]  G a l l e y , S.W. ; and Goldberg, R o b e r t P. Software debugging: t h e v i r t u a l machine approach. Proceedings of the ACM Annual Conference, New Y o r k , New York TT974), 3 9 5 - 4 0 1 . " Discusses the use o f v i r t u a l machines f o r d e b u g g i n g o p e r a t i n g s y s t e m s and o t h e r p r i v i l e g e d s o f t w a r e a t the machine language l e v e l w i t h o u t t h e n e c e s s i t y o f a d e d i c a t e d p h y s i c a l machine.  (Gell  75]  G e l l e r , D e n n i s P. Debugging o t h e r l a n g u a g e s i n APL. Software — Practice and E x p e r i e n c e , 5:2 (1975 A p r i l - J u n e ) , 139-145. Suggests that debugging might f e a s i b l y be done u s i n g APL a s a pseudocode. I n t h i s p r o c e s s , a program w r i t t e n i n some source language i s translated manually into APL and debugging i s c a r r i e d o u t u s i n g t h e APL i n t e r p r e t e r .  [ G l a s 68]  Glass, R o b e r t L. SPLINTER— a PL/I interpreter emphasising debugging c a p a b i l i t y . Computer B u l l e t i n . 12:5 (1968 S e p t e m b e r ) , 180- 185. Describes a noninteractive interpreter for a subset of PL/I w r i t t e n i n F o r t r a n on t h e O n i y a c 1108 under EXEC I I . The s y s t e m d e p e n d s on l a n g u a g e e x t e n s i o n s t o p r o v i d e flow and variable  R e f e r e n c e s and  Annotated  Bibliography  traces. Interpretation of an intermediate code extensive run-time e r r o r d e t e c t i o n and correction; dumps and f r e q u e n c y c o u n t s a r e a l s o a v a i l a b l e .  121 facilitates postmortem  [ Goul 75]  G o u l d , J o h n D. Some p s y c h o l o g i c a l e v i d e n c e on how people debug computer programs. InternatisnalJ o u r n a l o f Man-Machine Studies, 7:2 (1975 March), 151-182. Describes a c o n t r o l l e d experiment designed t o provide evidence on how t r a i n e d programmers debug computer programs. Interactive d e b u g g i n g a i d s were a v a i l a b l e t o t h e s u b j e c t s , b u t few of them u s e d t h e f a c i l i t i e s due, p r o b a b l y , t o t h e a r t i f i c i a l c o n s t r a i n t s imposed on t h e e x p e r i m e n t .  [Gran 66]  Grant, E.E. "An E m p i r i c a l C o m p a r i s o n o f O n - L i n e and O f f - L i n e Debugging". R e p o r t SP-2141, S y s t e m D e v e l o p ment C o r p o r a t i o n , S a n t a M o n i c a , C a l i f o r n i a , 1966 May. 16pp. [ (NTIS) AD-633 907 ) Describes an experiment t o compare o n l i n e and o f f l i n e program d e b u g g i n g w i t h r e s p e c t t o p e r s o n - h o u r s and c o m p u t e r time./ The r e s u l t s a r e f a i r l y i n c o n c l u s i v e and h i g h l y d a t e d .  [ G r i s 70]  Grishman, Ralph. The d e b u g g i n g s y s t e m AIDS. „ AFIPS C o n f e r e n c e P r o c e e d i n g s . 36 (SJCC 197 0 ) , 59-64. Describes an interactive debugginq system f o r use on the CDC 6600 w i t h F o r t r a n and a s s e m b l e r proqrams. No m o d i f i c a t i o n s to the language t r a n s l a t o r s a r e n e c e s s a r y ; t h e debugginq system accepts source listing files as i n p u t and e x t r a c t s r e l e v a n t i n f o r m a t i o n from these. Translated programs can be either simulated o r d i r e c t l y e x e c u t e d and t r a p s a r e n o t i m p l e m e n t e d by m o d i f y i n g t h e m a c h i n e code. The s y s t e m k e e p s a h i s t o r y f i l e and has b a c k u p c a p a b i l i t i e s .  [Gris  71a] Grishman, Ralph. C r i t e r i a f o r a debugging language.. I n [ R u s t 71 ], 57-75. Suggests t h a t a debugging language c o n t a i n event-driven procedures and t h a t t h e d e b u g g i n g l a n g u a g e c l o s e l y r e s e m b l e t h e h o s t language. The a u t h o r lists criteria f o r the I comparison of debuqqinq s y s t e m s and b r i e f l y d e s c r i b e s t h e AIDS s y s t e m , g i v i n g a sample t e r m i n a l s e s s i o n and an a n a l y s i s of t h e s y s t e m from t h e user's viewpoint.  [ G r i s 7 1 b ) G r i s w o l d , R a l p h E.; Poage, J . F . ; and Polonsky, I.P. The SNOBOL4 Programming !;§.______• Prentice-Hall, 1971,"149-163. [ I S B N 13-815373-6] Describes the l a n g u a g e - p r o v i d e d debugging a i d s of the Snobol4 programming language, which include function and variable t r a c i n g , and s n a p and postmortem dumping.  R e f e r e n c e s and  Annotated  Bibliography  122  [ G r i s 75 ]  G r i s w o l d , R a l p h E. A portable diagnostic facility for SN0BOL4. Software §.!<! E x p e r i e n c e , 5:1 (1975 J a n u a r y - M a r c h ) , 93-104?" Describes a language e x t e n s i o n t o t h e macro i m p l e m e n t a t i o n o f S n o b o l 4 which a l l o w s t h e u s e r t o a c c e s s t h e underlying virtual machine. Such access can be used to a i d i n debugging the implementation, to write s u b r o u t i n e s t o analyze internal data structures f o r pedagogic r e a s o n s , and t o p r o v i d e c a p a b i l i t i e s which a r e i l l e g a l u n d e r n o r m a l c i r c u m s t a n c e s . (Habe 7 3 ]  Habermann, Arie Nicolass. C r i t i c a l comments on the programming l a n g u a g e Pascal. Agta Informatica. 3 ( 1 9 7 3 ) , 47-57.  [Hadj 76]  Hadjioannou, Michael. Debugging of parallel programs. Proceedings of linti C o n f e r e n c e on System S g i e n e g s , H o n o l u l u , H a w a i i (1976 J a n u a r y ) , 20-22, an extension to EXDAMS [ B a l z 69] supporting the of programs c o n t a i n i n g p a r a l l e l c o n t r o l s t r u c t u r e s .  Proposes debugging [Hall  flasaii lalgrjaaMoaal  75]  H a l l , Wayne; and D a v i d s o n , James Edward. "The LISP Library User's Manual". Department of Computer S c i e n c e , U n i v e r s i t y o f B r i t i s h C o l u m b i a , 1975 A u g u s t , 35-56. D e s c r i b e s t h e debugging package a v a i l a b l e i n LISP/MTS at the U n i v e r s i t y o f B r i t i s h C o l u m b i a . , The p r i m a r y f a c i l i t i e s p r o v i d e d are c o n d i t i o n a l b r e a k p o i n t s on function calls, display and modification o f the e v a l u a t i o n s t a c k , the a b i l i t y t o change t h e d e b u g g i n g r e f e r e n c e p o i n t , and t h e e v a l u a t i o n o f any Lisp form including calling the Lisp structure editor. The package i s i n t e r a c t i v e and language-dependent.,  [Halp 65]  Halpern, Mark. Computer programming: t h e d e b u g g i n g epoch opens. C o m p u t e r s and A u t o m a t i o n , 14:11 (1965 November), 28-31. D i s c u s s e s t h e need f o r bound c h e c k s on a l l numeric variables, limits on transfers to prevent interrupts, checks on t i m e c o n s t r a i n t s , and s o u r c e - l e v e l dumps. The a u t h o r t h e o r i z e s that debugging i s t h e n e x t major h u r d l e t o be surmounted i n computer science.  [Hans 75]  Hanson, D a v i d R. " A d d i t i o n s t o the SITBOL Implement a t i o n o f SNOBOL4 t o F a c i l i t a t e Interactive Program Debugging".. Technical Report S4D51, D e p a r t m e n t o f Computer S c i e n c e , U n i v e r s i t y o f A r i z o n a , 1975 April. 26pp.  R e f e r e n c e s and  Annotated  Bibliography  123  Describes extensions to the S i t b o l i m p l e m e n t a t i o n o f Snobol4 which facilitate interactive debugging. Using these few language a d d i t i o n s , t h e a u t h o r was a b l e t o w r i t e an i n t e r a c t i v e d e b u g g i n g command p a c k a g e f o r S n o b o l 4 i n S n o b o l 4 i t s e l f . Great r e l i a n c e i s p l a c e d on t h e dynamic e v a l u a t i o n c a p a b i l i t i e s o f t h e l a n g u a g e ( e . g . , t h e CODE f u n c t i o n and c o m p u t a b l e b r a n c h i n g ) .  (IBM  70]  [IBM  72]  International Business Machines Corporation. "IBM System/360 O p e r a t i n g System: P L / I (F) L a n g u a g e R e f e r ence Manual". O r d e r Number GC28-8201, S y s t e m s R e f e r e n c e L i b r a r y , New Y o r k , N e w Y o r k , 1970 J u n e . 445pp.  I n t e r n a t i o n a l B u s i n e s s Machines C o r p o r a t i o n . "IBM OS F u l l A m e r i c a n N a t i o n a l S t a n d a r d COBOL". O r d e r Number GC28-6396-3, Systems R e f e r e n c e L i b r a r y , New Y o r k , New Y o r k , 1972 May, 326-330., D e s c r i b e s e x t e n s i o n s t o ANSI s t a n d a r d c o b o l t o a l l o w programmers to i n c o r p o r a t e debugging statements d i r e c t l y into their Cobol source programs. The features provided include paragraph tracing, symbolic tracing of program identifiers, and a p r i m i t i v e c o n d i t i o n a l breakpoint facility....  [Inga 72]  I n g a l l s , D a n i e l H.B. The e x e c u t i o n t i m e p r o f i l e as a programming t o o l . In ( R u s t 7 2 ] , 107-128. S t r e s s e s t h e i m p o r t a n c e o f p r o f i l e s t o a i d i n program d e b u g g i n g , testing, and optimization (with emphasis on t h e l a s t ) . The a u t h o r l i s t s s e v e n r e a s o n s why a l l l a n g u a g e processors should contain a profile f a c i l i t y .  [ I t o h 73 ]  I t o h , D a i j u ; and I z u t a n i , Takao. FADEBUG-I, a new tool f o r program d e b u g g i n g , grocggdin.gs o f t h e I E E E Symposium on Computer. Softwa£g S a l i a M i l i t l # New, Y o r k , New Y o r k " (19*73 May)", 38-43. D e s c r i b e s a m o d u l e - t e s t i n g package which analyzes a l l l o g i c a l execution p a t h s i n a program, a c c e p t s t e s t d a t a and a n t i c i p a t e d r e s u l t s t o t e s t each p a t h , and r e p o r t s any d i s c r e p a n c i e s between the a c t u a l and e x p e c t e d r e s u l t s .  [ J e n s 74]  J e n s e n , K a t h l e e n ; and B i r t h , Niklaus. fianaai and Report. Lecture Notes S c i e n c e : S p r i n g e r - V e r l a g , 1974. 167pp. 90144-2 and 3-540-90144-2]  PASCAL User in Computer [ I S B N 0-387-  [John 78]  J o h n s o n , Mark Scott. "An Implementor»s Guide to RAIDE". Technical Manual TM-20, Department of Computer S c i e n c e , University of British Columbia, 1978 A u g u s t . 46pp.  R e f e r e n c e s and  Annotated  Bibliography  C o n t a i n s d e t a i l s o f t h e OBC i m p l e m e n t a t i o n o f too t e c h n i c a l f o r t h i s thesis.  124 RAIDE  which  are  [J8ns 68]  J O n s s o n , Sven Ingvar. On-line program debugging. BIT, 8 ( 1 9 6 8 ) , 122-127. D e s c r i b e s a g r a p h i c - d i s p l a y o n l i n e debugging system d e s i g n e d f o r machine-language programs using a dual-processor dedicated computer. The s y s t e m c a n s w i t c h r e a d i l y from interpretive to noninterpretive execution.  [Jose 69]  Josephs, W i l l i a m H. An on-line machine language debugger f o r OS/360. AFIPS C o n f e r e n c e P r o c e e d i n g s , 35 (FJCC 1969), 179-186, Describes a rather s t a n d a r d m a c h i n e - l a n g u a g e d e b u g g i n g system named DYDE f o r use u n d e r OS/360 w i t h an IBM 2260 g r a p h i c d i s p l a y terminal.  [Kemm 7 6 ]  Kemmerer, R i c h a r d A. A SIMULA 67 debugging system. P r o c e e d i n g s o f t h e F o u r t h I n t e r n a t i o n a l C o n f e t e n e e on t h e D e s i g n and Implementation of Algorithmic Lang u a g e s ? New Y o r k , New York l l 9 7 6 June) , 2 8 - 4 6 ? " D e s c r i b e s t h e d e s i g n o f e x t e n s i o n s t o t h e S i m u l a 67 l a n g u a g e to facilitate debugging. , These include exception handling, tracing, execution profiles, postmortem dumps, and run-time assertions.  [Kirs  74]  Kirsch, B a r r y M. "An Improved Error Diagnostics System f o r , IBM System/360-370 Program Dumps". M a s t e r ' s T h e s i s : Department o f Computer and Information S c i e n c e , Ohio S t a t e U n i v e r s i t y (Columbus), 1974 J u n e . „. 60 pp. Describes a m o d i f i e d IBM System/360/370 c o r e dump u s i n g ad hoc a n a l y s i s of program interrupts to suppress irrelevant dump information.  [Knob  75]  [Knut  71]  Knobe, B r u c e S.; towards a better (1975) , 277-286.  and Y u v a l , Gideon. Some steps PASCAL. Computer L a n g u a g e s . 1:4  Knuth, D o n a l d E. An empirical study of FORTRAN programs. S o f t w a r e •— P r a c t i c e an4 Exgerience. 1:2 (1971 A p r i l - J u n e ) , 10 5-133?" Presents the r e s u l t s of a study to determine the programming habits of Fortran programmers. The author uses the data o b t a i n e d t o s t r e s s t h e i m p o r t a n c e o f program e x e c u t i o n profiles i n d e b u g g i n g , t e s t i n g , and o p t i m i z a t i o n .  References  and  Annotated  Bibliography  125  [Koch 69]  Kocher, Wallace.. "A Survey of C u r r e n t Debugging Concepts"* NASA C o n t r a c t o r R e p o r t CR-1397, Goddard Space Flight Center, Greenbelt, Maryland, 1969 August. 91pp. [ (NTIS) N69-35613 ] Surveys the debugging a i d s a v a i l a b l e i n s e v e r a l systems, with o n l y s h o r t mention of o n l i n e debugging t e c h n i g u e s . [Kuls  69]  K u l s r u d , H e l e n e E. HELPER: an i n t e r a c t i v e e x t e n s i b l e debugging system. P r o c e e d incjs gf the Seco£d SlSfiosium on O p e r a t i n g Systems P r i n c i p l e s « P r i n c e t o n U n i v e r s i t y (1969 O c t o b e r ) , 105-111. Describes HELPER, a machine-language i n t e r a c t i v e system used under t h e IDA CDC 6600 operating system. The system itself contains four parts: an incremental command translator, a s i m u l a t o r , debugging r o u t i n e s , and a communicator. Language translators must be m o d i f i e d t o produce r e l e v a n t i n f o r m a t i o n . The s y s t e m k e e p s a h i s t o r y f i l e and h a s backup c a p a b i l i t i e s . [ K u l s 71]  Kulsrud, H e l e n e E. E x t e n d i n g t h e i n t e r a c t i v e debugg i n g system HELPER. I n [ R u s t 7 1 ] , 77-91. Reviews the material p r e s e n t e d i n [ K u l s 69] and d e s c r i b e s two r e c e n t improvements i n t h e s y s t e m : a n o n l i n e i n s t r u c t i o n system and an i n t e r f a c e e n a b l i n g F o r t r a n programs t o be debugged u s i n g the system.  [Lamp 6 5 ]  Lampson, B u t l e r W. , I n t e r a c t i v e machine language programming. AFIPS Conference Proceedings# 27:1 (FJCC 1965) , 473-481.  [ L e c a 75]  Lecarme, Olivier; and Desjardins, Pierre. comments on the programming l a n g u a g e P a s c a l . I n f o r m a t i c a , 4 (1975) 231-243.  More Acta  4  [Ledg 75] Contains debugging [Ledg 76)  L e d g a r d , Henry F., PE2_ramming P r o v e £ b s . Hayden Book Company, 1975. 134pp. [ISBN 0-8^04-5522-6] a short section on debugging t e c h n i g u e s : top-down and l a n g u a g e - and s y s t e m - p r o v i d e d d e b u g g i n g a i d s .  Ledgard, Henry F.; S i n g e r , Andrew; and H u e r a s , J o n . "A U s e r ' s G u i d e t o t h e PASCAL A s s i s t a n t " . Technical Report, University o f M a s s a c h u s e t t s , 1976 June. 39pp. Describes an e n v i r o n m e n t i n w h i c h P a s c a l programs c a n be d e v e l o p e d , t e s t e d , and m a i n t a i n e d .  R e f e r e n c e s and  Annotated  Bibliography  126  [Leed 66]  L e e d s , H e r b e r t D,; and W e i n b e r g , G e r a l d M. Computer ____*_i_i_2 Fundamentals. M c G r a w - H i l l Book Company, 1966, 358-395. Describes t h e m a c h i n e - l a n g u a g e and F o r t r a n d e b u g g i n g f a c i l i t i e s under t h e SHARE o p e r a t i n g system f o r the IBM 7090. For both languages, the programmer must specify debugging a c t i o n s a t t r a n s l a t i o n - t i m e t h r u language extensions.  [Lest  7 1 a ] L e s t e r , B r u c e P. The c o s t o f d e b u g g i n g . Proceedings _____ Fourth Hawaii I n t e r nat_2fl_I Conference onSystem Sciences. H o n o l u l u , Hawaii (1971 J a n u a r y ) , 713-715. A condensation of [ Lest 71b].  [Lest  71b] L e s t e r , B r u c e P. "Cost Analysis of Debugging Systems". Project MAC R e p o r t TR-90, M a s s a c h u s e t t s I n s t i t u t e o f T e c h n o l o g y , 1971 September. 112pp. Develops a method f o r p r e d i c t i n g t h e c o s t of e i g h t i n t e r a c t i v e debugging system features in an implementation-independent manner. The author uses the Vienna D e f i n i t i o n Language t o d e f i n e an a b s t r a c t m a c h i n e on w h i c h t h e features analyzed are run. To do t h i s he d e f i n e s a s e t o f p r i m i t i v e a c t i o n s needed by an i n t e r a c t i v e d e b u g g i n g s y s t e m .  [Mann 7 3 ]  Mann, G e o r g e A. A s u r v e y o f debug s y s t e m s . H__ey__§11 Computer J o u r n a l , 7:3 ( 1 9 7 3 ) , 182-198. Identifies five approaches to debugging: b a t c h , i n t e r a c t i v e , internal, external, and playback. The author lists the desirable f e a t u r e s of a language-independent "debugging support s y s t e m " and p r o p o s e s a d e b u g g i n g l a n g u a g e . A brief discussion o f an i m p l e m e n t a t i o n s t r a t e g y f o r s u c h a system i s p r e s e n t e d . [ M a r c 76 ]  [Math  74]  [Math  75]  M a r c o t t y , M i c h a e l ; L e d g a r d , Henry F . ; and Bochmann, G r e g o r V. A sampler of f o r m a l d e f i n i t i o n s . Computi n g S u r v e y s , 8:2 (1976 J u n e ) , 191-27 6.  Mathis, R o b e r t F. Teaching debugging. SIGCSJ B u l l e t i n , 6:1 (1974 F e b r u a r y ) , 59-63. Describes a course in debugging t e c h n i g u e s with a proposed s y l l a b u s , r e a d i n g l i s t , and p r o j e c t s l i s t .  Mathis, R o b e r t F. Flow trace of a structured program, SIGPLAN N o t i c e s , 10:4 (1975 A p r i l ) , 33-37. Suggests that program e x e c u t i o n flow tracing for structured programs c a n be p r e t t y p r i n t e d t o c l a r i f y the logical flow of e x e c u t i o n and t h a t v a r i a b l e t r a c e s c a n be p a r a g r a p h e d t o d i s p l a y the s c o p e o f v a r i a b l e s . !  References  and  Annotated  127  Bibliography  [ M i l l 76a] M i l l e r , Alan. "OBC PL/1: Computing C e n t r e , University 1976 J u n e . 80pp.  Using PL/1 of British  [Mill  76b] M i l l s , H a r l a n D.„ S o f t w a r e Development. §Stigns on Software Snalneg.ring, December) , 265-273. ~  [Moor  75]  [Morg  71]  at UBC". Columbia,  I E E E -; I r a n s SE-2:2 (1976  Moore, C.G., I I I ; Wqrona, S t e v e n L.; and Conway, Richard gaiter. "PL/CT — A Terminal Version of PL/C". Technical Report 75-259, Department of Computer S c i e n c e , C o r n e l l U n i v e r s i t y , 1975 September. 7pp. Describes a version of PL/C designed f o r use on an IBM 2741 typewriter terminal r u n n i n g under t h e o p e r a t i n g s y s t e m CMS. A l i m i t e d s u b s e t o f P L / C - l i k e s t a t e m e n t s c a n be entered at runt i m e a s commands; s o u r c e program c h a n g e s r e g u i r e r e t r a n s l a t i o n . Morgan, Howard L . ; and Wagner, R o b e r t A. PL/C: the design of a high-performance compiler f o r PL/I. AFIPS Conference £roceedings, 38 (SJCC 1971), 503-510. D e s c r i b e s t h e d e s i g n c r i t e r i a and i m p l e m e n t a t i o n o f t h e d i a g n o s t i c P L / I t r a n s l a t o r PL/C.  [ Moul 6 7 ]  M o u l t o n , P.G.; and M u l l e r , M. E. DITRAN — a c o m p i l e r emphasizing diagnostics. C o m m u n i c a t i o n s ojf tJig ACH, 10: 1 (1967 J a n u a r y ) , 45-52. D e s c r i b e s t h e DITRAN n o n i n t e r a c t i v e d e b u g g i n g s y s t e m , w h i c h aims to detect a l l n o n l o g i c a l e r r o r s within Fortran programs. This is a c c o m p l i s h e d by m a i n t a i n i n g r u n - t i m e c o n t r o l b l o c k s f o r e a c h v a r i a b l e t o c h e c k i n i t i a l i z a t i o n , t y p e e r r o r s , and r a n g e e r r o r s , and by m a i n t a i n i n g r u n - t i m e t a b l e s o f s o u r c e program s t a t e m e n t o f f s e t s and i d e n t i f i e r s . The s y s t e m c o n t a i n s a use m o n i t o r and some f a c i l i t i e s t o e n h a n c e s t u d e n t - o r i e n t e d c o m p u t i n g .  [ORei 76]  0»Reilly, Dennis. "UBC I F : The Interactive FORTRAN Manual". Computing Centre, University of B r i t i s h C o l u m b i a , 1976 September. 121pp. Describes an i n t e r a c t i v e , i n t e r p r e t i v e F o r t r a n l a n g u a g e p r o c e s sor available under the MTS operating system on an IBM System/360/370. E x t e n s i v e language-dependent debugging a i d s a r e provided, including run-time source statement modification, variable and parameter checks, breakpoints, and subroutine invocation traces. Programmable b r e a k p o i n t s p r o v i d e some d e g r e e of system e x t e n d a b i l i t y .  R e f e r e n c e s and  Annotated  Bibliography  128  [Orga  73]  Organick, E l l i o t I r v i n g . Com-puter System Organization: The B5700/B6700 S e r i e s . ACM Monograph S e r i e s : Academic P r e s s , 1973. 132pp. [ISBN 0- 12-528250-8 ]  [Palm  77]  [Panz  76]  £Pask  73]  Pasko, Henry John. "A P s e u d o - M a c h i n e f o r Code Generation". T e c h n i c a l R e p o r t CSRG-30, Computer S y s t e m s R e s e a r c h Group, U n i v e r s i t y o f T o r o n t o , 1973 December. 91pp.  [Peck 75]  Peck, John E.L. "The E s s e n c e o f Computer S c i e n c e " . Technical Manual TM-7, Department of Computer Science, University of British Columbia, 1975 October, 47pp.  Palme, J a c o b . SIM DDT — f o r c o n v e r s a t i o n a l debugging of SIMULA programs. Simula _ej£sle_tte_£, 5:2 (1977 May) , 13-16. Briefly describes the DECsystem^-10 Simula debugging system (SIMDDT). A l t h o t h e system r e q u i r e s the t r a n s l a t o r to generate s p e c i a l t a b l e s , l i t t l e run-time overhead i s r e q u i r e d unless an error i s detected.,  P a n z l , David J . T e s t p r o c e d u r e s : a new approach to software verification. Proceedings of t h e Second I n t e r n a t i o n a l C o n f e r e n c e on S o f t w a r e E n g i n e e r i n g , San F r a n c i s c o , C a l i f o r n i a (1976 O c t o b e r f , 477-485." Presents the concept of a t e s t procedure, a formal s p e c i f i c a t i o n of test cases t o be applied to one o r more t a r g e t program modules. A T e s t Procedure Language (TPL) i s defined and an implemented system employing i t for Fortran programs i s described.  [Pier  74]  Pierce, R.H. Source l a n g u a g e d e b u g g i n g on a s m a l l computer. Computer J o u r n a l . 17:4 (1974 November), 3 1 3 - 3 1 7 . . , " " " " ' . D e s c r i b e s t h e DDS (Dynamic D e b u g g i n g - S o u r c e ) interactive system for the C o r a l 66 programming l a n g u a g e on the Argus 700 s m a l l s c a l e computer. Using translated code, the system can set breakpoints, resume e x e c u t i o n , examine and a l t e r v a r i a b l e s and a b s o l u t e l o c a t i o n s , and a l t e r t h e s o u r c e program. Alterations can be done using only a subset of Coral s i n c e the f u l l t r a n s l a t o r i s not a v a i l a b l e d u r i n g debugging.  [Poll  77]  Pollack, Bary Billiam; and Fraley, R o b e r t A. "PASCAL/UBC U s e r ' s G u i d e " . Technical Manual TM-2, D e p a r t m e n t o f Computer S c i e n c e , U n i v e r s i t y o f B r i t i s h C o l u m b i a , 1977 November. 54pp.  References  and  Annotated  Bibliography  129  [ P o o l 73]  Poole, P.C. Debugging and t e s t i n g . In [Baue 73], 278-318. Presents a short tutorial on program debugging and c u r r e n t debugging t e c h n i q u e s . A list of desirable features of an i n t e r a c t i v e debuqqing system i s p r e s e n t e d .  [Pull  69]  P u l l a m , J o h n S. "An O b j e c t - t i m e D i a g n o s t i c Facility for H i g h - l e v e l Languages". Master's T h e s i s : Department of Electrical Engineering, University of T o r o n t o , 1969. 155pp. D e s c r i b e s a n o n i n t e r a c t i v e debugging system for PL/I programs implemented by s i m u l a t i n g a d e b u g g i n g - o r i e n t e d v i r t u a l machine named POODL, The system depends on language extensions to p r o v i d e f l o w and v a r i a b l e t r a c i n g .  [Pyle  71]  P y l e , I . e . ; M c L a t c h i e , R.C.F.; and Gran da ge, B, A second-order bug with delayed e f f e c t . Software — P r a c t i c e and E x p e r i e n c e , 1 : 3 (1971 July^September),  231-2337  R e l a t e s an e x p e r i e n c e d e m o n s t r a t i n g t h e d i f f i c u l t y of tracking down a software bug when t h e u n d e r l y i n g machine a r c h i t e c t u r e d o e s not p r o v i d e s u f f i c i e n t b u i l t - i n o p e r a n d e r r o r d e t e c t i o n . [ R a i n 73 ]  R a i n , Mark. Two u n u s u a l methods f o r d e b u g g i n g system software. S o f t w a r e - - P r a c t i c e and Experience, 3:1 (1973 J a n u a r y - M a r c h ) , 61-63. D e s c r i b e s two t e c h n i g u e s f o r t e s t i n g s o f t w a r e : t h e bug f a r m -- a program which accepts a, v a l i d program f o r the system b e i n g t e s t e d a s i n p u t and w h i c h o u t p u t s t h i s program in a randomly scrambled f o r m , and t h e bug c o n t e s t -- p a y i n g u s e r s a b o u n t y t o d i s c o v e r and r e p o r t b u g s i n a new system.  [Reis  75]  Reiser, John F. "BAIL— A Debugger for SAIL". Technical Report STAN-CS-75-523, Computer Science D e p a r t m e n t , S t a n f o r d U n i v e r s i t y , 1975 O c t o b e r . 24pp., Describes BAIL, a language-dependent, interactive debugging system f o r S a i l programs r u n n i n g under e i t h e r t h e TENEX o r t h e TOPS-10 o p e r a t i n g s y s t e m on a DECsystem-10. When a breakpoint o c c u r s , any o f t h e f o l l o w i n g a c t i o n s i s p e r m i t t e d : a s i m p l e S a i l e x p r e s s i o n can be e v a l u a t e d , a u s e r o r s y s t e m p r o c e d u r e can be called, an assignment can be made, o r a BAIL command c a n be executed. O n l y a few s y s t e m commands a r e s u p p o r t e d ; t r a c i n g and the setting of breaks a r e h a n d l e d by p r o c e d u r e c a l l s . Altho code g e n e r a t i o n changes a r e not r e g u i r e d , the translator must supply BAIL w i t h d e s c r i p t i o n s o f a l l v a r i a b l e s , p r o c e d u r e s , and statements.  References  and  Annotated  Bibliography  [Rich  69]  Richards, Martin. BCPL; a t o o l f o r c o m p i l e r and system programming. AFIPS Q o n f e ^ e n c e i n g s . 34 (SJCC 1969) , 557-566.  [Rich  77]  R i c h a r d s , M a r t i n ; P e c k , J o h n E.L.; and M a n i s , V i n c e n t Stewart. "The BCPL Programming Manual". Technical Manual TM-10, Department of computer Science, U n i v e r s i t y o f B r i t i s h C o l u m b i a , 1977 December. 62pp.  [Rust  71]  130 writing Proceed-  Rustin, Randall {editor).,/ Debugging T e c h n i q u e s i n _____ S y s t e m s . : P r e n t i c e - H a l l , 1971. 148pp. fisiN 0-13-197319-3) C o n t a i n s a number o f p a p e r s related to debugging which were presented a t a C o u r a n t I n s t i t u t e symposium i n 1970. Especially r e l e v a n t a r e [ G r i s 7 1 a ] , [ K u l s 7 1 ] , and [ B l a i 7 1 ] .  [Rust  72]  [Sack  68]  [Satt  72]  [Satt  75)  Rustin, Randall (editor). Design Compilers. P r e n t i c e - H a l l , 1972. 200204-3]  and O p t i m i z a t i o n o f 141pp. [ISBH 0-13-  Sackman, H. Time-sharing versus batch processing: the experimental evidence. AFIPS Conference Proc e e d i n g s , 32 (SJCC 1968), 1-10. Summarizes t h e a r g u m e n t s f o r and a g a i n s t t i m e - s h a r i n g and b a t c h processing. By c o m p a r i n g five previous s t u d i e s , the author concludes that time-shared processing results in greater programmer p r o d u c t i v i t y and program q u a l i t y . ,  Satterthwaite, Edwin H a l l o w e l l , J r . Debugging t o o l s f o r hiqh l e v e l languages,, Software Practice and E x p e r i e n c e , 2:3 (1972 J u l y - S e p t e m b e r ) , 197-2V7, Describes a modification to the Algol-B translator which provides run-time symbolic t r a c e s , frequency count i n f o r m a t i o n , and a postmortem dump. T h e s e f a c i l i t i e s must be requested at translation-time and are language-dependent. The p a p e r d e s c r i b e s the implementation and c o n t a i n s s t a t i s t i c s c o n c e r n i n g t h e overhead o f the debugging f a c i l i t i e s . S a t t e r t h w a i t e , Edwin H a l l o w e l l , J r . Source Language Debugging Tools. Doctoral D i s s e r t a t i o n : Computer S c i e n c e Department, S t a n f o r d University, 1975 May. 338pp. [UMI o r d e r number 75-25,602 and T e c h n i c a l R e p o r t STAN-CS-75-494 ] Elaborates on t h e m a t e r i a l p r e s e n t e d i n [ S a t t 7 2 ] and p r o v i d e s e x c r u c i a t i n g d e t a i l s o f the implementation.  R e f e r e n c e s and  Annotated  Bibliography  131  [Schw 7 1 ]  Schwartz, J a c o b T. An overview of bugs. In [ R u s t 7 1 ] , 1-16. Gives a broad overview of program bugs and the debugging process. The a u t h o r a d v o c a t e s debugging languages which are "event-oriented", that i s , which consider time to be an i m p o r t a n t component o f t h e d e b u g g i n g p r o c e s s ( e . g . . What was t h e v a l u e o f z t h e f i r s t t i m e t h a t x was g r e a t e r t h a n y?) .  (Scow 7 2 ]  Scowen, R.S. "Debugging Computer P r o g r a m s •— A Survey with Special Emphasis on ALGOL". Report NAC-21, National Physical Laboratory, Teddington, E n g l a n d , 1972 J u n e . 36pp. [ (NTIS) N73-11189 ] Briefly discusses principles of debugging, but is primarily concerned with benchmarking t h e e r r o r d i a g n o s t i c f a c i l i t i e s of many A l g o l 60 t r a n s l a t o r s . The author distinguishes between active debugging (requiring user intervention) and passive d e b u g g i n g ( a u t o m a t i c i n t e r v e n t i o n by t h e s y s t e m ) .  [Seid  68]  Seidel, K e n n e t h P. Debugging past and present. S o f t w a r e Age, (1968 A u g u s t ) , 22,24,26-28. Surveys the debugging capabilities u n d e r OS/360 f o r programs w r i t t e n i n assembly language, C o b o l , F o r t r a n , and P L / I .  (Site  71]  [Step  74]  [Stoc  65]  S i t e s , R i c h a r d L. "ALGOL-w R e f e r e n c e Manual". Techn i c a l R e p o r t STAN-CS-71-230, Computer S c i e n c e D e p a r t ment, S t a n f o r d U n i v e r s i t y , 1971 August.,, 169pp.  S t e p h e n s , P. D. The IMP l a n g u a g e and c o m p i l e r . Comp u t e r J o u r n a l , 17:3 (1974 A u g u s t ) , 216-223. B r i e f l y m e n t i o n s t h a t t h e EMAS t r a n s l a t o r f o r IMP contains a debugging o p t i o n which c a u s e s c o d e t o be g e n e r a t e d t o c h e c k f o r such run-time c o n d i t i o n s as undefined v a r i a b l e s and assignment truncation, and s p e c i a l code t o f a c i l i t a t e a postmortem dump i n s o u r c e language terms.,  Stockham, Thomas G., J r . Some methods o f g r a p h i c a l debugging. P r o c e e d i n g s o f t h e J.BM S c i e n t i f i c Computing Sy.rapjDsium on Man,-Machine Commun.Isatisa# Yorktown H e i g h t s ? New~York (1965~May)7 57-71." Describes an early machine-language g r a p h i c d i s p l a y debugging s y s t e m which c a n p r o d u c e c o r e dumps i n o c t a l a n d c a n d i s p l a y t h e dynamic execution flow of programs as e i t h e r g r a p h s o r f l o w charts. Nongraphic a s p e c t s o f t h e system are not d i s c u s s e d .  [Stoc 67]  Stockham, Thomas G. , J r . Report on the working c o n f e r e n c e on o n l i n e debugging. Communications of t h e ACM, 10:9 (1967 S e p t e m b e r ) , 590-592.  R e f e r e n c e s and  Annotated  Bibliography  132  Advocates t h e development o f " i n t e g r a t e d programming systems". The c o n f e r e n c e c e n t e r e d on how m a c h i n e - l a n g u a g e debugging t e c h n i g u e s can be a p p l i e d t o h i g h - l e v e l l a n g u a g e s . [ S t r u 74]  [Teit  69]  [Text  78]  Strunk, W i l l i a m , J r . ; and 2_ ____§« M a c m i l l a n , 1959.  W h i t e , E.B. 71pp.  Th.e  Ilemejats  Teitelman, Warren. Toward a programming l a b o r a t o r y . __________ of the I n t e r n a t i o n a l J o i n t Conference on Artificial Intelligence. Washinqton, D.C. (1969 Hay), 1-8a. Describes the PILOT s y s t e m at BBN w h i c h c o n t a i n s a n a u t o m a t i c s p e l l i n g c o r r e c t i o n s y s t e m (DWIM), an e d i t i n g p a c k a g e , a breakpoint package, and an "advising facility" which a l l o w s the i n t e r f a c e s between modules t o be m o d i f i e d e a s i l y . The author stresses the importance o f k e e p i n g an e x e c u t i o n h i s t o r y , p r o grammable b r e a k p o i n t s , and the u s e r i n t e r f a c e . Texture Support Group. "Texture User's Manual". Technical Manual TM-8, Department of Computer Science, University o f B r i t i s h C o l u m b i a , 1978 J a n u ary. 59pp.  [Thorn 7 6 ]  Thomson, CM. E r r o r c h e c k i n g , t r a c i n g , and dumping i n an ALGOL 68 c h e c k o u t c o m p i l e r . P r o c e e d i n g s o f t]je fourth International Conference on t h e D e s i g n and Implementation o f A l g o r i t h m i c Languages, New York, New~York (1976 J u n e ) , 93-98. D e s c r i b e s t h e r u n - t i m e c h e c k s r e g u i r e d o f A l g o l 68 p r o g r a m s and the facilities p r o v i d e d by t h e FLASC d i a g n o s t i c t r a n s l a t o r f o r full-language A l g o l 68, which include a l l of the standard c a p a b i l i t i e s except v a r i a b l e t r a c i n g .  [OWM  U n i v e r s i t y o f W i s c o n s i n a t Madison. "OLDS Reference Manual f o r the 1110". Academic Computing C e n t e r , U n i v e r s i t y of Wisconsin at Madison, 1973 February. 20pp. D e s c r i b e s an o n l i n e d e b u g g i n g s y s t e m f o r t h e U n i v a c 1110. Altho designed for debugging m a c h i n e - l a n g u a g e and F o r t r a n p r o g r a m s , the system i t s e l f p r o v i d e s a debugging language allowing for function definitions, l i s t manipulations i n the s t y l e of L i s p , and the u s u a l b r e a k p o i n t and m a c h i n e - l e v e l d e b u g g i n g f a c i l i t i e s .  [Vand  73]  74]  van den B o s c h , P e t e r N i c o . "The D e s i g n and Implement a t i o n o f a Document Processor". Master's Thesis; D e p a r t m e n t o f Computer S c i e n c e , U n i v e r s i t y o f B r i t i s h C o l u m b i a , 1974 O c t o b e r . 157pp.  References  and  Annotated  Bibliography  133  [ V a n T 74 ]  Van T a s s e l , D e n n i e L. £rogram Stjle, Design, E f f i c i e n c y . * D e b u g g i n g * and Testing. Prentice-Hall, 7974, 117-165. [ISBN 0-13-729939-7] Presents a g e n e r a l d i s c u s s i o n of debugging, ways of detecting and preventing bugs, and a taxonomy o f bugs and t h e i r c a u s e s . Only a s u p e r f i c i a l d i s c u s s i o n of automated debugging aids is presented. [VanH 76 ]  van W i j n g a a r d e n , Aad; M a i l l o u x , B a r r y J • ; Peck, John E.L.; Koster, Cornells H.A.; Sintzoff, Michel; L i n d s e y , C.H.; M e e r t e n s , Lambert G.L•T.; and Fisker, R.G. (editors). R e v i s e d Report on the A l g o r i t h m i c L a n g u a g e A l g o l 68. Springer-Verlag, 1976. 236pp. [ I S B N 3-540-07592-5 and 0-387-07592-5 ]  [Vene  76]  Venema, T j e e r d . "TRUST U s e r ' s G u i d e " . Department of Computer Science, University of B r i t i s h Columbia, 1976 August. 65pp.  [Vers  64]  v e r S t e e g , R.L. TALK — a h i g h - l e v e l source language debugging t e c h n i q u e w i t h r e a l - t i m e data extraction. C o m m u n i c a t i o n s o f the. ACM, 7:7 (1964 J u l y ) , 418-419. B r i e f l y d e s c r i b e s t h e TALK (Take A LooK) d e b u g g i n g s y s t e m which is executed as a four step process: t r a n s l a t i o n of the user p r o g r a m , t r a n s l a t i o n o f TALK commands, program execution, and TALK debugging output editing. Implemented f o r t h e CS-1 p r o gramming l a n g u a g e , no s p e c i a l c o d e i s produced by t h e t r a n s l a t o r altho a symbol t a b l e must be g e n e r a t e d . The s y s t e m a l l o w s o n l y for conditional variable traces.  [Vict  7 6 a ] V i c t o r , K e n n e t h E. "The D e s i g n and I m p l e m e n t a t i o n o f DAD, a M u l t i - P r o c e s s , M u l t i - M a c h i n e , M u l t i - L a n g u a g e , I n t e r a c t i v e Debugger '. Augmentation Research C e n t e r , SRI International, Menlo Park, California, 1976 August. 51 pp. D e s c r i b e s a debugging system d e s i g n which s u p p o r t s the debugging of multiprogrammed software, the components o f w h i c h may be written in different high-level languages and translated and running on machines of varying a r c h i t e c t u r e s . , DAD i s b e i n g implemented i n t h e N a t i o n a l S o f t w a r e S o r k s network environment. Altho designed as a h i g h - l e v e l , symbolic debugging system, the d e b u g g i n g commands t h e m s e l v e s a r e f a i r l y l o w - l e v e l and resemble those of machine-language debugging systems. This report also c o n t a i n s a b r i e f but u s e f u l h i s t o r y of debugging. 1  (Vict  7 6 b ] V i c t o r , K e n n e t h E. " U s e r ' s G u i d e t o DAD". Augmentat i o n R e s e a r c h C e n t e r , SRI I n t e r n a t i o n a l , Menlo Park, C a l i f o r n i a , 1976 September. 74pp.  R e f e r e n c e s and  Annotated  Bibliography  134  E x p l a i n s t h e p r i m i t i v e commands o f DAD. The command l a n g u a g e i s not uniform due t o t h e l a r g e number o f o p t i o n s a p p l i c a b l e and s p e c i f i c t o e a c h command. The l a n g u a g e i s also low-level in that i t makes e x t e n s i v e use of special s y m b o l s and u s e s a positional, a s s e m b l e r - l i k e command format. The ability to " p r o g r a m " t h e s p e c i a l s y m b o l s a l l o w s t h e u s e r t o t a i l o r somewhat t h e command language to resemble a particular host source language,.  [Vict  77]  V i c t o r , K e n n e t h E. The d e s i g n and i m p l e m e n t a t i o n of DAD, a m u l t i p r o c e s s , multimachine, multilanguage interactive debugger. Proceedings of the Tenth ______ International C o n f e r e n c e on System S c i e n c e s , H o n o l u l u , H a w a i i (1977 January),~196-199. A condensation of [ V i c t 76a],  [Watt  74]  Watt, J.M. ; P e c k , J o h n E.L. ; and Sintzoff, Michel. Revised ALGOL 68 s y n t a x c h a r t . SIGPLAN N o t i c e s , 9:7 (1974 J u l y ) , 39.  [ Wein 7 1 ]  Weinberg, G e r a l d M. , The Psychology, o f C o m p u t e r P r o gramming. Computer S c i e n c e " s e r i e s : " Van ~5ostrand R e i n h o l d Company, 1971. 288pp. [ I S B N 0-442-29264-3]  [Wexe 7 6 ]  W e x e l b l a t , R i c h a r d L. H a x i ms f o r m a l f e a s a n t designers, or how t o d e s i g n l a n guages t o make programming as d i f f i c u l t as p o s s i b l e . £&_________ of the Second _____________ C o n f e r e n c e on S o f t w a r e E n g i n e e r i n g , San Francisco, California {1976 O c t o b e r ) , 3 31-336?"  [ W i l e 74]  Wilcox, Bruce; Hafner, C a r o l e ; Friedman, P a u l ; H a l l , Wayne; McDonald, D a v i d Blair; and Davidson, James Edward. "The LISP/MTS User's Guide". Technical Manual TM-16, D e p a r t m e n t of Computer Science, University of British Columbia, 1974 September, 6 5-74. Describes the l a n g u a g e - p r o v i d e d d e b u g g i n g a i d s o f t h e LISP/MTS system a t t h e U n i v e r s i t y of B r i t i s h Columbia, which include an evaluation s t a c k dump, f u n c t i o n t r a c i n g , s t e p e x e c u t i o n , a f o r m o f r e v e r s e program e x e c u t i o n , and t h e evaluation of arbitrary L i s p forms.  [ W i l e 76]  W i l c o x , Thomas R.; D a v i s , Alan Mark; and Tindall, M i c h a e l H. The d e s i g n and i m p l e m e n t a t i o n o f a t a b l e driven, interactive diagnostic programming system. Communications of the ACM, 19:11 (1976 November), 609-616.  References  and  Annotated  Bibliography  135  Provides an overview with examples of CAPS, an i n t e r a c t i v e diagnostic translator/interpreter that allows beginning programmers to p r e p a r e , debug, and e x e c u t e s i m p l e programs a t a PLATO IV d i s p l a y t e r m i n a l . CAPS automatically diagnoses (but does not correct) e r r o r s b o t h a t t r a n s l a t i o n - and r u n - t i m e by r e v e r s e program e x e c u t i o n and i n t e r a c t i o n w i t h the user. The s y s t e m s u p p o r t s programs w r i t t e n i n F o r t r a n , c o b o l , and P L / I .  [Wino 7 5 ]  Hinograd, Terry. Breaking the complexity barrier again. S IG PL AW Hot i c e s, ,10:1 (1975 J a n u a r y ) , 13-30. P r o p o s e s t h a t what i s n e e d e d t o b r e a k the present "complexity barrier" i n software d e v e l o p m e n t i s an i n t e g r a t e d programming s y s t e m c a p a b l e o f r e l i e v i n g many of the programmer's tedious burdens, such as debugging. (Wolm 72 ]  Wolman, B.L. D e b u g g i n g P L / I programs i n t h e Multics environment. AFIPS Conference Proceedings, 41:1 (FJCC 1 9 7 2 ) , 507-5147 Mentions the language extensions and system facilities of Multics PL/I for program debugging. The system provides, without the use o f a s p e c i a l debugging t r a n s l a t o r , p a t c h i n g i n source language terms, c o n d i t i o n a l breakpoints, breakpoint s u b r o u t i n e s , t r a c i n g o f p r o c e d u r e c a l l s , and p r o f i l e s of program execution.  [Wort 72]  Wortman, David Barkley. "A S t u d y o f L a n g u a g e D i r e c ted Computer Design". Technical Report CSBG-20, Computer Systems Research Group, University of T o r o n t o , 1972 December. 207pp.  [Wulf  73]  Wulf, William; and considered harmful. F e b r u a r y ) , 28-34.  [Zelk  71]  Shaw, Mary. Global variable SIOPLAf t Q t i c e s , 8:2 (1973  Zelkowitz, M a r v i n V. Reversible Execution as a Diagnostic Tool. D o c t o r a l D i s s e r t a t i o n : Department of Computer S c i e n c e , C o r n e l l U n i v e r s i t y , 1971 January. 149pp. (UMI o r d e r number 71-17,676] D e s c r i b e s an e x t e n s i o n t o t h e PL/C l a n g u a g e and t r a n s l a t o r which a l l o w s b a t c h programs t o be e x e c u t e d i n r e v e r s e when an e r r o r i s detected, A l t h o the author summarily d i s m i s s e s o n l i n e environments, he a d v o c a t e s t h e use o f e x t e n s i v e i n t e r r u p t f a c i l i t i e s t o a i d i n program d e b u g g i n g and p r o p o s e s hardware e x t e n s i o n s to a i d debugging.  References [Zelk  and A n n o t a t e d  Bibliography  136  73]  Z e l k o w i t z , M a r v i n 7. R e v e r s i b l e e x e c u t i o n . Communic a t i o n s o f t h e ACM, 16:9 (1973 September) , 566. A condensation o f f Zelk 71],  [Zimm 6 7 ]  Zimmerman, L u t h e r L. O n - l i n e program d e b u g g i n g — a g r a p h i c approach. Computers and A u t o m a t i o n , 16:10 (1967 November), 30-31,34. ~ B r i e f l y describes GBUG, a graphic display online debugging system f o r machine-language programs. The a u t h o r c l a i m s t h a t speed o f i n f o r m a t i o n d i s p l a y i s the . primary advantage of a g r a p h i c debugging system.  137 Appendix 1.,  Status  A.  RAIDE System  Functions  Functions  CALLER (foo) returns a s p e c i f i c value identifying caused entry i n t o the segment-specific  t h e segment 'foo'.  which  COMMENT(n,foo) r e t u r n s t h e ' n ' - t h comment o f t h e s e g m e n t - s p e c i f i c *foo» as a character string. The n u l l s t r i n g i s r e t u r n e d i f t h e r e i s no ' n ' - t h comment. CURRENT_EXCEPTION returns t h e name (as a c h a r a c t e r s t r i n g ) o f t h e c u r r e n t l y active exception. The n u l l s t r i n g i s r e t u r n e d i f t h e r e i s no c u r r e n t l y a c t i v e e x c e p t i o n . DEBUG_LEVEL r e t u r n s an i n t e g e r i n d i c a t i n g t h e c u r r e n t l e v e l o f debugging support i n effect. (See T a b l e VI f o r t h e r a n g e o f r e s u l t values.) DECLARATION_LIST(n) returns a d a t a - s p e c i f i c v a l u e i d e n t i f y i n g t h e ' n ' - t h most recently declared top-level debugging variable or procedure. DEFERRED_ACTION_LIST (n) r e t u r n s a s e g m e n t - s p e c i f i c value identifying t h e ••"n'-th most recently deferred action. n=0 i d e n t i f i e s t h e c u r r e n t l y a c t i v e d e f e r r e d a c t i o n , i f t h e r e i s one. DEFINED (foo) returns l o g i c a l t r u e i f t h e d a t a - s p e c i f i c <foo» c u r r e n t l y has a v a l u e ; f a l s e i s r e t u r n e d otherwise. ENVIRONMENTALIST (n) returns t h e name (as a c h a r a c t e r s t r i n g ) o f the 'n'-th most r e c e n t l y s a v e d e n v i r o n m e n t . n=0 r e t u r n s t h e name o f the currently active e n v i r o n m e n t , i f t h e r e i s o n e . The n u l l s t r i n g i s r e t u r n e d i f t h e r e i s no 'n'-th accessible environment. LANGUAGE (f OO) r e t u r n s t h e name (as a c h a r a c t e r string) o f the source l a n g u a g e i n which t h e s e g m e n t - s p e c i f i c ' f o o ' was w r i t t e n . RANGE ( f o o , m, n) r e t u r n s a generic value identifying g e n e r i c ' f o o ' between 'm' and *n*.  a  subrange  o f the  Appendix  A.  RAIDE System  Functions  REFERENCE_POINT returns a segment-specific reference point. TYPE (foo) returns the type s p e c i f i c * foo'.  (as a  VALUE (foo) returns the current •foo'. A guestion undefined. 2.  D i s p l a y Format  value  character  138  identifying  string)  the  of  current  the  data-  v a l u e o f t h e segment- o r d a t a - s p e c i f i c mark i s r e t u r n e d i f ' f o o ' i s c u r r e n t l y  Functions  LINE(n) c a u s e s t h e o u t p u t d i s p l a y d e v i c e t o be a d v a n c e d (The argument i s o p t i o n a l and d e f a u l t s t o 1.) PAGE causes the output d i s p l a y device b e g i n n i n g o f a new page.  to  be  *n* l i n e s ,  advanced  to  the  SPACE(n) c a u s e s t h e o u t p u t d i s p l a y d e v i c e t o be s p a c e d over 'n* spaces. I f spacing fills the display buffer, i t is d i s p l a y e d and t h e o u t p u t d i s p l a y d e v i c e i s advanced one line. (The argument i s o p t i o n a l and d e f a u l t s t o 1.) TAB (n) c a u s e s t h e o u t p u t d i s p l a y d e v i c e t o be t a b b e d •n' o f t h e c u r r e n t ( o r s u b s e g u e n t ) l i n e . 3.  Analysis  to  column  Functions  #ACCESSES (foo) returns the been a c c e s s e d  number of times the d a t a - s p e c i f i c 'foo' s i n c e system i n i t i a l i z a t i o n .  has  #ALLOCATIONS(type) returns t h e number o f t i m e s dynamic a l l o c a t i o n s o f t y p e ' t y p e ' have been made s i n c e s y s t e m i n i t i a l i z a t i o n . , #ENTRIES(foo) r e t u r n s t h e number o f t i m e s t h e s e g m e n t - s p e c i f i c been e n t e r e d s i n c e s y s t e m i n i t i a l i z a t i o n .  'foo* has  #EXITS(foo) r e t u r n s t h e number o f t i m e s t h e s e g m e n t - s p e c i f i c been e x i t e d s i n c e system i n i t i a l i z a t i o n .  •foo* has  A p p e n d i x A.  EAIDE System  Functions  139  #OPDATES ( f o o )  returns the number of times the d a t a - s p e c i f i c *foo* been u p d a t e d s i n c e s y s t e m i n i t i a l i z a t i o n . 4.  language-Dependent  System  has  Functions  CDBEENT_segment-generic returns a specific value identifying the e x e c u t i n g segment o f t y p e s e g m e n t - g e n e r i c * . 1  currently  140  Appendix  B.  Dispel  Syntax  Chart  Legend; t—  ""™  I r—i I |AH> B I M I 1—> C D 1 1  "  A i s defined as e i t h e r B, c , o r D  _  A,  „,  | |  1  ABA, ABABA,,  treat  r  —»  i  |A| IB J |C|  choose or C  1  one o f A, B, 1 J  i- J  „i  ,.—  .„ - •  1 (A B)  1  1  ....  1 A| B  —T"  . } abc 1 +- +  --—1  abc i s o p t i o n a l  1 1 * 1 J  ;, i .  1  A and B a s one c o n s t r u c t  J  I utterance! ' i — — ' i  1  f - > | e x p l a n a t i o n J—> e x p l a i n  «  keyphrase  1  I—>linguiryl—>  T~  inquire  sentence  r  ~9  i  J~-> ! d e c l a r a t i o n t—>I i n t e g e r I L—,— — 1 j specific \  I—> I d e f i n i t i o n | ' i I *—> d e f i n e  ( expression +—;  )i d ! , +  1  i  id  declaration!;  r—  1  ->!command H-> i d 1  (  +-—'  +—-  +  : +  —.  T  IwhenJ  L—,—a —  )  -+  as  command  .  action r  i  f—+ |when condition | '——>!on exception!, 1 |.before s p e c i f i c - i n c i d e n t ! >| !after specific-incident!, |  a p p e n d i x B.  Dispel  Syntax  Chart  141  I action) »  I  H>  begin _  declaration!; +  k~>  break  message + +  H->  call  id  (  cancel  ;  display.  )  —  *.  +  {expression  as  type}!,  on  r  •»  +  I  i—> i f  '  specific!, condition  —  • _ _  .  ->  id  then  do  input  +  action  action  else +  t—>  action . « — ,  file-name + +  H> suit  message * — + v  t— > reference H->  restore  variable + *. file-name  saving +  H>  save  1—>  set  I I  H>  variable  to  _  file-name  expression  segment-generic . — •  I—> s y s t e m +  -> w h i l e  —_  file-name  sk|.p  file-name  Jexpression segment-generic! J *• — • j IsMlS c o n d i t i o n \ i. j  k—> e x e c u t e  J~> f o r  end  variable!, •«•—  •—>  command!;  expression!,  +  H->  ; +  .  system-command _ >  condition  do  action  -—+  f i +  Appendix  B.  D i s p e l Syntax  Chart  142  I specific-incident|  J *—>| s p e c i f i c j i _ 1  generic-incident + +  I t—>  variable  *—>  §.___  generic  + --+  Isegment-gualifierj  ~_——;  •—->  ;  in  i  variab 1 e  I ~*—: :—I I generic-incident J I  t  rr.  I I en t ry. j *—>lexit | Jaccess) I update|  I  I variable| «—r-  -—  J  -> g e n e r i c .+  .  _  : +  :  i  ——a  :—  jungualif led-variable |  i  —  j  —  I *—>  _  —  _  j  segment-gualifier . — — ^  !  {id  (expression|, •  •  )H»  — • • - - - + .  n o n t e r m i n a l s r e p r e s e n t e d by s t r i n g l i t e r a l s : f i l e - n a m e , k e y p h r a s e , message, s e n t e n c e , system-command n o n t e r m i n a l s r e p r e s e n t e d by i d e n t i f i e r s : exception, g e n e r i c , segment-generic, type l e x i c a l l y primitive nonterminals: id, integer, real, string  A p p e n d i x B.  Dispel  Syntax  Chart  143  I condition| — — i  I *~>Ilogical-term|  ,  or  _  r  condition  —i  »~>| l o g i c a l - f a c t o r I *  — »  i  I I 1  and  logical-term  +  ;1 (logical-primary| i — __ _—, 1  1  —>  not +-+  r  I I I  r  KI 1^1  «-->  expression  |=|  logical-primary  1*1 l>l L  •  r— ••—: "1 Iexpression| *~r --•  I h-> t e r m  I. I I I  +  r-i |*|  expression  l-l «-  J  t -j t 1 «—>|termJ—>| f a c t o r | i 1 »  I I  I J—>  r i |*| J/J  «+  term  J  '*  variable  I |~> I I—>  integer real  I i—>  string  I 1  —>  {  expression  J  ---  144 Appendix  I  C.  SPAM  :  Descriptor  Formats  —  "  I  —  ~  1 '  :  i  SD  ^  1  r-—I  I  I  type  I  |  —r-—-—•  ~ — i  1  interrupt  j  :—I • -  addr  I  I  h— ~ r r—»,sto|dm>—r—, r—flevelj-— - -f |segtypeJ t t o | l c | | Jbe|ae|bx|ax I |length|caoJ i : -i 1 J 1 _J J > i j j i j = type information f i e l d T  type  segtype  =  segment  type  code  tto  =  the type t a b l e segment ( e . g . ,  Ic  =  i f segtype = procedure, a code indicating in which s o u r c e l a n g u a g e t h e p r o c e d u r e was w r i t t e n (The s p e c i a l c o d e " e x t e r n a l " i n d i c a t e s t h a t the procedure i s defined e x t e r n a l l y t o the machine.)  offset  =  t h e EAIDE ated with  dm  =  a f l a g to i n d i c a t e i n d e b u g mode  interrupt  =  interrupt =  before  ae  =  after  bx  =  before  ax  =  after  symbol t a b l e this item  this  type  to  segment  interrupt  enabled enabled  flag  exit  interrupt  enabled  flag  interrupt  level  =  the  of  this  addr  =  if lc = external, routine  the  is  associ-  executing  flag  segment address  =  if l c * external, syllables  cao  =  if lc # external, the f i r s t i n s t r u c t i o n of the  Segment  the  enabled  length  C-1.  entry  the  flag  interrupt  lexic  block)  describing  the  entry  exit  or  field  level  Figure  the  offset  that  information entry  to  procedure  proc (int) real)  sto  be  (e.g.,  length  of  of  the  code area segment  Descriptor  Format  the  external  segment  offset  to  in  the  Appendix C.  SPAM D e s c r i p t o r F o r m a t s  145  DD . —  r  j  - — - _ -  _ _ _  ._|  type I I interrupt | | 1 r — r — i — i — i — I stoi 1 1 — - r - H value | tto|rc|s|d|c|l|t| Jba|aa|bu|au| J J  type  =  type  i  _ _  J—X  1  1  information  I  field  tto  =  the type t a b l e o f f s e t t o the type d e s c r i b i n g t h e data item (e.g., integer, real, scalar, or structure)  rc  =  t h e number of levels of indirection associated w i t h t h e d a t a i t e m ( e . g . , i f r c = 1, t h e i t e m i s a r e f e r e n c e t o some o t h e r v a l u e )  =  subrange of integer or scalar f l a g ( i . e . , the bounds t a b l e c o n t a i n s t h e bounds f o r t h e i n t e g e r v a l u e s w h i c h t h i s d a t a i t e m can p o s s e s s )  d  =  value f i e l d  c  -  constant value flag (i.e., d a t a i t e m c a n n o t be a l t e r e d )  =  long value f l a g ( i . e . , the a c t u a l value of this item i s i n the f r e e storage area, the value f i e l d o f t h i s d e s c r i p t o r c o n t a i n s an o f f s e t i n t o t h e f r e e s t o r a g e area)  =  temporary value f l a g collection}  defined  flag  {used t o f a c i l i t a t e  sto  =  t h e RAIDE symbol t a b l e o f f s e t ated with t h i s item  interrupt  =  interrupt  information  t o the entry  field  ba  ~  before access  aa  =  after  bu  =  before  au  =  a f t e r update i n t e r r u p t  access  i n t e r r u p t enabled interrupt  enabled  update i n t e r r u p t enabled  [continued F i g u r e C-2.  the value of t h i s  on n e x t  enabled  flag flag flag flag  page)  D a t a D e s c r i p t o r Format  garbage associ-  A p p e n d i x C.  value  a.  SPAM D e s c r i p t o r  =  value f i e l d on t h e t y p e  Formats  146  {The f o r m a t o f t h i s f i e l d i s d e p e n d e n t f i e l d , and i s d e f i n e d as f o l l o w s ; }  i  i f r c > 0;  ,  I  I T * I | offset | I a r e a t-— r~ —I I Jlevellorder| value  h  t  -  1  i  i  area  =  a code f o r t h e a r e a t o w h i c h t h e r e f e r e n c e refers ( e . g . , dynamic s t o r a g e s t a c k o r f r e e s t o r a g e a r e a )  offset  =  the o f f s e t i n the i n d i c a t e d  b.  area  t o the data  level  =  i f a r e a ~ dynamic of the i t e m  storage  stack, the l e x i c  order  =  i f a r e a = dynamic the i t e m  storage  stack,  i f 1 = true;  r  I  value r  the  item level  order  of  1 | .j  |length1fsao| t —  ,  1  J  length  =  the l e n g t h of the data area  fsao  -  the offset i n the free storage s y l l a b l e of the data item  c.  item  in  the area  free  t o the  otherwise:  value  =  the a c t u a l  F i g u r e C-2.  value  of the data  Data D e s c r i p t o r F o r m a t  storage  item (continued)  first  A p p e n d i x C.  SPAM  Descriptor  Formats  r  147  AD T •: - i interrupt | ~i 1—r—r—i—r-H st o bto J value J :o|rc|s | d|c 11|11 |ba|aa|bu|au| I 1 x. a i i . i L i i J JL _i i... j i  I  type  type  T  I  type information field ( T h i s f i e l d h a s t h e same f o r m a t as t h a t o f a d a t a descriptor, but with s p e c i a l meaning f o r t h e f o l l o w i n g s u b f i e l d s : } d  =  a flag t o i n d i c a t e that storage has been a l l o c a t e d  t  =  a f l a g to i n d i c a t e that the storage referenced by t h i s d e s c r i p t o r i s a l s o r e f e r e n c e d by a n o t h e r d e s c r i p t o r and t h a t i t must n o t b e d e a l l o c a t e d  f o r the array  sto  t h e RAIDE symbol t a b l e o f f s e t t o t h e e n t r y ated with t h i s item  interrupt  interrupt Information field same f o r m a t a s t h a t o f a d a t a  bto  the the  value  value field (This field has t h e same f o r m a t as t h a t o f a data d e s c r i p t o r f o r a r e f e r e n c e (i.e., when rc > 0). I f a r e a = dynamic s t o r a g e stack, the ( l e v e l , o r d e r ) p a i r a d d r e s s e s the f i r s t element of the array. The subsequent elements a r e addressed (level,order+1), (level,order*2),.,.,}  offset array  Figure  {This f i e l d has t h e descriptor.}  i n t h e bounds t a b l e t o  C- 3.  Array  Descriptor  associ-  the  Format  bounds  of  A p p e n d i x C.  SPAM D e s c r i p t o r F o r m a t s  1  148  —  SCSED  1  1I 1 1  I  SD .  j-  offset  • 1  1 J  sso  .J  - 1 f  SD  =  a field segment  offset  =  t h e o f f s e t i n t h e code a r e a { r e l a t i v e t o t h e f i r s t i n s t r u c t i o n o f t h i s segment) t o t h e n e x t instruct i o n t o be e x e c u t e d  sso  =  the offset i n t h e s c o p e s t a c k t o t h e s c o p e which i s l o c a l t o t h i s segment  F i g u r e C-4.  c o n t a i n i n g t h e same s u b f i e l d s a s t h a t o f a descriptor  Segment C o n t r o l S t a c k  Entry  Descriptor  Format  SSED T"  eso  I  dsso  |  eso  =  the o f f s e t i n the expression stack to the first entry a v a i l a b l e t o t h e segment (s) w h i c h i n d e x ( e s ) t h i s scope s t a c k e n t r y  dsso  =  t h e o f f s e t i n t h e dynamic storage stack to the first entry a v a i l a b l e to the segment (s) which index(es) t h i s scope stack entry  F i g u r e C-5.  Scope S t a c k  Entry  Descriptor  Format  1  Appendix  D.  SPAM T a b l e  Entry  49  Formats  | BTE t TI type | | J I T—-r—I l b | u b | fttoldjcj | | type  =  type  information  field  tto  =  the type t a b l e o f f s e t to the subrange o f i n t e g e r or s c a l a r t y p e f o r which t h i s e n t r y d e f i n e s the bounds  d  =  bounds f i e l d s  c  =  constant  defined  flag  bounds v a l u e  flag  lb  =  lower  bound  value  ub  =  u p p e r bound  value  Figure  D-1.  Bounds T a b l e  Entry  Format  A p p e n d i x D.  SPAM T a b l e  Entry  Formats  150  TTE  T 1 r r i~ -\ I c l a s s j t t o | b t o | r c \ c o m p s J parmsIdim j  r t  class  a.  c.  i  1  J  a self-referent  . 4  ,  I  type  table  offset  subrange tto  =  the type t a b l e subrange  bto  =  the bounds t a b l e  =  the type t a b l e o f f s e t t o the implement t h e s c a l a r v a l u e s  offset  to the base  offset  defining  type the  of  the  subrange  scalar  bto  e.  J  primitive  tto  d.  -1  class c o d e {The f o r m a t o f the r e m a i n i n g f i e l d s i s d e p e n d e n t on t h e c l a s s f i e l d , as f o l l o w s ; }  tto  b.  •%  the used  base t y p e  bounds table o f f s e t d e f i n i n g the t o implement t h e s c a l a r v a l u e s  used  to  subrange  reference tto  =  the type reference  rc  =  t h e number o f l e v e l s o f indirection associated w i t h t h e r e f e r e n c e ( i . e., r e f e r e n c e c o u n t )  table  offset  t o the  base type  of  the  structure comps  =  t h e number o f components c o n s t i t u t i n g t h e s t r u c t u r e {The components t h e m s e l v e s a r e d e s c r i b e d by t h e s u c c e e d i n g 'comps t y p e t a b l e e n t r i e s * } 1  (continued Figure  D-2.  on  next  Type T a b l e  page] Entry  Format  Appendix f.  g.  h.  i.  D.  SPAM T a b l e  Entry  Formats  151  procedure tto  =  the type t a b l e o f f s e t p r o c e d u r e (which may,  t o t h e t y p e y i e l d e d by of c o u r s e , be v o i d )  the  parms  =  the number of parameters which t h e p r o c e d u r e a c c e p t s {The p a r a m e t e r s t h e m s e l v e s a r e d e s c r i b e d by t h e s u c c e e d i n g 'parms* t y p e t a b l e e n t r i e s . }  tto  =  the type t a b l e o f f s e t array  dim  -  the d i m e n s i o n a l i t y { i . e . , number o f s u b s c r i p t s ) of the array {The subscripts themselves are described by the succeeding 'dim* t y p e t a b l e entries.}  comps  =  the number o f components c o n s t i t u t i n g t h e u n i o n {The components t h e m s e l v e s a r e d e s c r i b e d by the s u c c e e d i n g 'comps' t y p e t a b l e e n t r i e s . }  deferred  {to i n d i c a t e t h a t t h e a c t u a l e n t r y d e s c r i p t i o n i s elsewhere i n the type table}  tto  =  array to the base  type  of  the  union  Figure  the type table description D-2.  offset  to  T y p e T a b l e E n t r y Format  the  actual  (continued)  entry  152 Appendix /*  instructions  c l a s s e s b a s e d on given.  for  SPAM I n s t r u c t i o n  This  their  is  some  of  of use.  followed  an e x p l a n a t i o n  presented  the  in outline  Segment C o n t r o l  MARKSS  [Push new push_ss  DEFSEG  SPAM For by  have  a list  divided into  enclosed  Necessary t o improve  any, Also,  Spamdol c o d e i s  consistency overall  seven  if  i n braces.  associated  */  a mnemonic i s  of i t s operand(s),  i n s t r u c t i o n s , the form.  been  each i n s t r u c t i o n ,  of i t s execution,  c h e c k s have been s u p p r e s s e d 1.  Repertoire  Bloody i n s t r u c t i o n s which, b e i n g l e a r n e d , r e t u r n to plague the i n v e n t o r . — W i l l i a m S h a k e s p e a r e , Macbeth The  and  E.  and  error  readability.  Instructions  a new e n t r y scope.}  onto the  scope s t a c k  to e s t a b l i s h a  (esptr*1,dssptr+1)  l e v e l , order [Push a new e n t r y o n t o the segment control stack define a segment whose d e s c r i p t o r i s a d d r e s s e d the p a i r ( l e v e l , o r d e r ) . }  to by  push_scs(dss[level,order],0,ssptr) DFFDATA  n, l o c [Push n new e n t r i e s o n t o t h e dynamic s t o r a g e s t a c k and allocate storage i f necessary. The n d e s c r i p t o r s s t a r t i n g at l o c a t i o n (0,loc) are templates for the e n t r i e s t o be made.) for  i := l o c t o l o c * n - 1 do p u s h _ d s s ( d s s [ 0, i ]) i f dss[dssptr] i s array_descriptor then a i l o c a t e _ a r r a y  A p p e n d i x E. PARM  SPAH I n s t r u c t i o n  Repertoire  153  loc {The top o f the e x p r e s s i o n stack must contain a p a r a m e t e r t o t h e p r o c e d u r e whose segment descriptor must be s e c o n d f r o m t h e t o p . T y p e - c h e c k t h e paramet e r , pop i t from t h e e x p r e s s i o n s t a c k , a n d push i t onto t h e dynamic s t o r a g e s t a c k . , ( 0 , l o c ) a d d r e s s e s the template f o r t h e procedure's f o r m a l parameter, which i s n e c e s s a r y t o p r o p e r l y a s s o c i a t e f o r m a l and a c t u a l parameters.} l o c a l  parm_no  parm_no := d s s p t r - s s f s s p t r ]. d s s o * 2 i f - s c s [ s c s p t r ] . d m o r check_parameter_type(parm_no,loc) t h e n push_dss(es[ esptr]) dss[ d s s p t r ] . s t o := dssf 0 , l o c ]. s t p pop_es e l s e i n t e r r u p t "parameter type mismatch" CALL  {The t o p o f t h e e x p r e s s i o n stack must c o n t a i n t h e d e s c r i p t o r f o r a segment which i s t o be c a l l e d . The parameters t o t h e segment a r e a l l on t h e dynamic storage stack and have been type-checked. The segment descriptor i s popped a n d a new e n t r y i s pushed o n t o t h e segment c o n t r o l s t a c k , thus initia t i n g e x e c u t i o n o f t h e segment,} l o c a l  no_parms  no_parms := d s s p t r - s s f s s p t r } . d s s o + 1 i f -»scs[ s c s p t r ]. dm o r check_number_of_parameters(no_parms) t h e n push_scs ( e s [ e s p t r ] , 0 , s s p t r ) pop_es e l s e i n t e r r u p t "wrong number o f a c t u a l EXITSEG  parameters"  segtype {Pop e n t r i e s f r o m t h e segment c o n t r o l s t a c k up t h r u t h e f i r s t whose segment t y p e i s s e g t y p e . I f t h e segment is r e t u r n i n g a v a l u e , i t must be moved o n t o t h e t o p of t h e expression stack. None o f t h e i n t e r m e d i a t e segments popped c a n r e t u r n a v a l u e . } result r e s u l t := e s [ e s p t r ] w h i l e (scsf s c s p t r ] . s e g t y p e * s e g t y p e ) d o pop_scs i f ( t t [ s c s [ s c s p t r ) . t t o ) , t t o * void) t h e n i f iscs[scsptr].dm o r c h e c k _ r e s u l t _ t y p e ( r e s u l t , type) t h e n push_es ( r e s u l t ) e l s e i n t e r r u p t " r e s u l t t y p e mismatch" l o c a l  '  Appendix  E.  SPAM I n s t r u c t i o n  Repertoire  154  CYCLE  segtype {Pop e n t r i e s from t h e segment c o n t r o l s t a c k until the first segment whose t y p e i s s e g t y p e i s e n c o u n t e r e d . R e s e t t h i s segment s o that i t begins reexecuting from i t s beginning. None o f t h e i n t e r m e d i a t e s e g ments popped can r e t u r n a v a l u e . } w h i l e {scs[ s c s p t r ] . s e g t y p e # s e g t y p e ) pop_scs s c s [ s c s p t r ] . o f f s e t := 0  SKIP  do  segtype, o f f s e t {The t o p o f t h e e x p r e s s i o n s t a c k must c o n t a i n a b o o l e a n value. If this v a l u e i s f a l s e , t h e f i r s t segment whose segment t y p e i s s e g t y p e c o n t i n u e s e x e c u t i n g a t the specified o f f s e t . .. The b o o l e a n i s popped from the e x p r e s s i o n s t a c k . SKIP c a n n o t be used to exit thru a segment which r e t u r n s a v a l u e ; EXITSEG must be u s e d i n s u c h c i r c u m s t a n c e s . } if  e s [ e s p t r ]. v a l u e  then pop_es else pop_es while ( s c s [ s c s p t r ]. s e g t y p e * s e g t y p e ) do pop_scs s c s [ s c s p t r ]. o f f s e t  CASE  :=  | offset  {The t o p o f the e x p r e s s i o n s t a c k must contain an integer value and the n e x t e n t r y must c o n t a i n a n array descriptor. A f t e r popping the top two stack entries, the array i s indexed to o b t a i n the o f f s e t from which the current segment i s to continue executing.} if  check_array_subscript  then s c s [ s c s p t r ] . o f f s e t := i n d e x _ a r r a y pop_es pop_es  else interrupt " c a s e r a n g e 2.  Data  posav  Access  error"  Instructions  l e v e l , order {Push t h e v a l u e a d d r e s s e d by the onto the e x p r e s s i o n stack.}  pair  (level,order)  A p p e n d i x E.  SPAM I n s t r u c t i o n  Repertoire  155  PUSHR  l e v e l , order (Push a reference t o t h e v a l u e a d d r e s s e d by t h e p a i r ( l e v e l , o r d e r ) onto t h e e x p r e s s i o n stack.}  POP  {Pop t h e t o p e n t r y  STORE  {The t o p o f t h e e x p r e s s i o n s t a c k must c o n t a i n a value w h i c h i s t o be s t o r e d i n t o t h e l o c a t i o n i n d i c a t e d by t h e r e f e r e n c e w h i c h i s n e x t f r o m t h e t o p . T h e s e two s t a c k e n t r i e s a r e t h e n popped. STORE must c h e c k f o r scope v i o l a t i o n s i n v o l v i n g r e f e r e n c e s : i t i s not allowed to assign a value t o a r e f e r e n c e v a r i a b l e whose l i f e t i m e e x c e e d s t h a t of the value itself. STORE must also check f o r s i z e e r r o r s , check f o r a s s i g n m e n t t o a c o n s t a n t , and p r o c e s s t h e b e f o r e and a f t e r update i n t e r r u p t s . }  COPy  (Duplicate the entry stack.}  SWAP  (Swap  SLICE  {The t o p o f t h e e x p r e s s i o n s t a c k must c o n t a i n t h e v a l u e o f a s u b s c r i p t i n t o t h e a r r a y d e s c r i b e d by t h e e n t r y second from t h e t o p . ( T h i s e n t r y must e i t h e r be an a r r a y d e s c r i p t o r o r a r e f e r e n c e t o an a r r a y d e s c r i p tor. ) After popping t h e t o p two s t a c k e n t r i e s , S L I C E r e t u r n s on t o p o f t h e e x p r e s s i o n s t a c k o n e o f the f o l l o w i n g : 1. t h e v a l u e o f an e l e m e n t o f t h e a r r a y , 2. a r e f e r e n c e t o an e l e m e n t o f t h e a r r a y , 3. a d e s c r i p t o r f o r a subarray of the array, or 4. a r e f e r e n c e t o a subarray descriptors}  SELECT  n {The top o f the expression stack must contain a d e s c r i p t o r f o r a structured value o r a reference to such a v a l u e . T h i s d e s c r i p t o r i s r e p l a c e d by e i t h e r the value of t h e n - t h s u b f i e l d o f t h e s t r u c t u r e o r by a r e f e r e n c e t o t h e same.}  DEREF  from t h e e x p r e s s i o n  on  the  top  of  stack.}  the  t h e top two e n t r i e s on t h e e x p r e s s i o n  expression  stack.}  {The top of the , e x p r e s s i o n stack must contain a reference value. This entry i s r e p l a c e d by t h e value referenced.}  Appendix 3.  E.  A r i t h m e t i c and  None  of  automatic  type  operand(s)  PUT  156  String Instructions  these  instructions  conversions  must be  Repertoire  are  operate  performed  of the c o r r e c t  on  on  arrays.  operands  Also,  (i.e.,  no the  type).  a.  binary instructions {The top two e n t r i e s of the e x p r e s s i o n s t a c k must c o n t a i n t h e operands.} i. i n t e g e r o r subrange of i n t e g e r operands ADD SUB MUL DIV MOD LT LE EQ NE GE. fiT ii. r e a l operands ADD SUB MUL DIV LT LE EQ NE GE GT iii. boolean operands AND OB iv. s t r i n g operands CONCAT v. r e f e r e n c e operands EQ NE  b.  u n a r y i n s t r u c t i o n s {The t o p o f t h e e x p r e s s i o n c o n t a i n t h e operand.} i. i n t e g e r or subrange of i n t e g e r operand ABS NEG SUCC PR ED ii. r e a l operand ABS N EG iii. boolean operand NOT  SUBSTR  4.  SPAM I n s t r u c t i o n  stack  must  [The top of the e x p r e s s i o n s t a c k must c o n t a i n e i t h e r two o r t h r e e o p e r a n d s . I f three operands are supplied, the top two entries must c o n t a i n i n t e g e r values which r e p r e s e n t the l e n g t h (top entry) and starting position (next entry) of t h e s u b s t r i n g t o be o b t a i n e d , and t h e t h i r d e n t r y f r o m the top must contain a string value or a r e f e r e n c e t o a s t r i n g from w h i c h t h e s u b s t r i n g w i l l be t a k e n . I f o n l y two operands are s u p p l i e d , t h e l e n g t h i s assumed t o be t h e r e m a i n d e r o f t h e s t r i n g and only the starting position and base string need to be s p e c i f i e d . A f t e r p o p p i n g i t s o p e r a n d s , SUBSTB r e t u r n s on t o p of the e x p r e s s i o n s t a c k e i t h e r a s t r i n g or a r e f e r e n c e to a s t r i n g which i s the s u b s t r i n g d e s i r e d . }  Transput I n s t r u c t i o n s  {The t o p o f t h e e x p r e s s i o n s t a c k value which i s o u t p u t t o the This string is then popped  must c o n t a i n a string primary output device. from the expression  Appendix  E.... SPAM I n s t r u c t i o n : R e p e r t o i r e  157  stack. }  {The n e x t r e c o r d f r o m t h e p r i m a r y i n p u t d e v i c e i s read into a newly a l l o c a t e d s t r i n g i n the f r e e storage a r e a and a d e s c r i p t o r o f t h i s s t r i n g v a l u e i s pushed onto the expression stack. A null string indicates t h a t t h e end of the f i l e has been e n c o u n t e r e d . ) 5.  S t o r a g e Management I n s t r u c t i o n s  SETBT  bto {The top two entries of the e x p r e s s i o n s t a c k must contain integer or subrange of integer values. T h e s e two e n t r i e s a r e popped and t h e i r v a l u e s p l a c e d i n t o the bounds t a b l e a t o f f s e t b t o . The t o p entry defines the dynamic upper bound which i s to be p l a c e d i n t o the t a b l e ; t h e n e x t entry defines the l o w e r bound.}  ALLOC  tto {Storage for a s t r u c t u r e o f type t t o i s a l l o c a t e d i n t h e f r e e s t o r a g e a r e a and a d a t a d e s c r i p t o r o f this t y p e i s pushed o n t o t h e e x p r e s s i o n s t a c k . }  6.  Status  Instructions  TESTYPE  mask {The t y p e field of the descriptor on top of the e x p r e s s i o n s t a c k i s c h e c k e d a g a i n s t t h e mask and the e n t r y i s r e p l a c e d by a b o o l e a n v a l u e which i n d i c a t e s whether o r n o t t h e masked b i t s o f t h e t y p e f i e l d a r e set.}  LENGTH  {The top o f t h e e x p r e s s i o n s t a c k value. This entry i s replaced string.}  LBOOND  {The t o p o f t h e e x p r e s s i o n s t a c k must c o n t a i n an array d e s c r i p t o r o r a v a l u e of s c a l a r t y p e . This entry i s r e p l a c e d by the lower bound, obtained from the bounds t a b l e , f o r t h e item.}  must c o n t a i n a s t r i n g by t h e l e n g t h o f the  Appendix  E.  UBOUND  [The t o p o f t h e e x p r e s s i o n s t a c k must c o n t a i n an a r r a y d e s c r i p t o r o r a value o f s c a l a r type. This entry i s r e p l a c e d by t h e u p p e r bound, obtained from the bounds t a b l e , f o r t h e item.}  7.  SPAM I n s t r u c t i o n R e p e r t o i r e  158  Miscellaneous Instructions  NOOP  [Execution continues  with  the next  instruction.)  CONVERT t t o {The t o p o f t h e e x p r e s s i o n s t a c k must c o n t a i n a v a l u e of p r i m i t i v e , subrange o f i n t e g e r , s c a l a r , o r r e f e r ence type. This entry i s r e p l a c e d with the value converted t o t h e p r i m i t i v e type tto.}  ASSERT  [The t o p o f t h e e x p r e s s i o n s t a c k must c o n t a i n a b o o l e a n value. T h i s e n t r y i s popped a n d , i f i t s v a l u e i s f a l s e , an i n t e r r u p t i s g e n e r a t e d . )  SIGNAL  exception {A u s e r - s p e c i f i e d i n t e r r u p t i s g e n e r a t e d , o c c u r r e n c e o f some e x c e p t i o n . }  STOP  [The machine i s a b n o r m a l l y  DUMP  code  signaling the  terminated.}  {One o f t h e machine areas, stacks, or tables (cf.. F i g u r e IV-1) i s dumped. The c o d e i n d i c a t e s w h i c h i s t o be dumped.}  159 A p p e n d i x F. /* A r e a l l y  great  An Example  talent  needed  including  like tion  A  i s  given  left-most  column  offsets  of  segment  of  program  the  fiefer  into  SPAM  T h e SPAM  and v a r i a b l e o p e r a n d s the  F-2  dynamic contains  no  storage the  further  and t h e t y p e  fields  s t a c k and bounds  table are i n i t i a l l y  i n an  must  stack.  The machine  s t a t e s o f t h e dynamic  important  transla-  machine  t o Appendix E f o r e x p l a n a t i o n s  F i g u r e F-3; o n l y  o f Hanoi  code i s p r e s e n t e d  a s s e m b l e r code.  stack,  object  f o r i t w r i t t e n i n an A l g o l -  completeness;  The i n i t i a l control  chosen i s Towers  i n F i g u r e F - 1 , and i t s SPAM  Figure  here f o r  be g i v e n .  instructions. the  source  o f a SPAM  machine code a n d t h e d e s c r i p t o r s  notation; l i t e r a l  into  only presented  the  i n F i g u r e F-2.  converted  translation  a c o m p l e t e example  The example  language i s c o n t a i n e d  assembler-like  will  both  f o r i t s execution.  [Peck 75:30-32].  Program  f i n d s i t s happiness i n execution, — J o h a n n W o l f g a n g yon G o e t h e */  T h i s appendix presents program,  SPAM O b j e c t  be The code  code i s  explanation o f t h e SPAM  storage  stack,  table are outlined i n  a r e mentioned. ,. The e x p r e s s i o n empty.  A p p e n d i x F.  stmt number  An  lexic level  1  2  1  2 3 4 2 5 1 Figure  Example  SPAH O b j e c t  source  Program  160  code  main: begin £roc h a n o i ( i n t e g e r v a l u e n ; c h a r valine me,de,ma) ; i f n>0 t h e n h a n o i (n- 1,me, ma,de) ; p r i n t (" HOVE DISK " , n , " FROM PEG ", me," TO PEG ",ma) ; h a n o i (n-1,de,me,ma) f i ; h a n o i (4 ,"A", "B", "C") end F-1.  Towers o f Hanoi  Source  Program  Appendix  F.  machine code 1 0 32 32 3 32 3 32 3 32 3 4  0 20 0 1 0 2 12 0 3 13 0 4 14 0 5 15  An Example SPAM O b j e c t  a s s e m h i e r _ c o de  comments  DEFSEG MARKSS PUSHV PUSHV PARK PUSHV PARM PUSHV PARM PUSHV PARM CALL  initial  STMTS HANOI 4 N •A* ME » B» DE •C* MA  PUSHV PUSHV GT SKIP  N 0  1 0 32 32 32 65 3 32 3 32 3 32 3 4  DEFSEG MARKSS PUSHV PUSHV PUSHV SUB PARM PUSHV PARM PUSHV PARM PUSHV PARM CALL  STMT 2  12 1 1 13 1 3 14 1 2 15  HANOI N 1 N ME ME MA DE DE MA  parameter  'hanoi*  s t a r t 'hanoi a t o f f s e t 51 i f statement d e f i n e t h e bounds o f t h e i f statement evaluate the i f expression 1  skip  t h e then c l a u s e  recursive c a l l evaluate  »n-1* and p a s s i t  pass the t h i r d  parameter parameter  pass t h e f o u r t h  parameter  page]  Towers o f H a n o i  i f false  t o »hanoi*  pass the second  [ c o n t i n u e d on n e x t F i g u r e F-2.  parameter parameter  pass t h e f o u r t h now i n v o k e  ENDIF  parameter  pass t h e t h i r d  32 1 0 32 0 7 78 7 64 103  0 1 1 0 0 8  t o 'hanoi*  pass t h e second  51 STMT1 IF-STMT  0 17  call  161  pass the f i r s t  ORIGIN DEFSEG DEFSEG  1 0 16 1 0 6  Program  SPAM  Code  Appendix  F.  An Example  SPAM O b j e c t Program  1  machine code  assembler code  1 32 32 193 82 32 82 32 82 32 82 32 82 96  DEFSEG POSHV POSHV CONVERT CONCAT PUSHV CONCAT PUSHV CONCAT PUSHV CONCAT PUSHV CONCAT PUT  STMT3 t r a n s p u t code ' MOVE DISK * N STRING c o n v e r t « n» t o t y p e s t r i n g c o n c a t e n a t e the s i x arguments ' FROM PEG ' o f 'print* into one o u t p u t s t r i n g ME  DEFSEG MARKSS PUSHV PUSHV PUSHV SOB PARM PUSHV PARM PUSHV PARM PUSHV PARM CALL  STMT4  1 0 32 32 32 65 3 32 3 32 3 32 3 4  0 18 0 9 1 0 5 0 10 1 1 0 11 1 3  0 19 0 1 1 0 0 8 12 1 2 13 1 1 14 1 3 15  Figure  F-2.  com mentis  ' TO PEG ' MA  HANOI N 1 N DE ME ME DE MA MA  recursive c a l l  to  *hanoi»  e v a l u a t e »n-1' and p a s s i t  pass t h e second pass the t h i r d pass t h e f o u r t h  Towers o f Hanoi  SPAM  Code  parameter parameter parameter  (continued)  Appendix The  F.  initial  offset  An Example dynamic  SPAM O b j e c t  storage  stack  Program  entries:  tjrpe  iffiportant_field_values  0  segment  1  segment  2 3 4 5 6  data data data data segment  7 8 9 10 11 12 13 14 15 16 17 18 19 20  data data data data data data data data data segment segment segment segment segment  segtype=proc tto=1 l e v e l = 0 l e n g t h = 2 8 cao=1 segtype=proc tto=6 l e v e l = 1 l e n g t h = 1 0 9 cao=51 t t o = 2 1=F v a l u e = 4 t t o = 5 1=T l e n g t h = 1 fsao=1 t t o = 5 1=T l e n g t h = 1 fsao=2 t t o = 5 1=T l e n g t h = 1 f s a o = 3 s e g t y p e = i f - s t m t tto=1 level=1 length=103 cao=57 t t o = 2 1=F v a l u e = 0 t t o = 2 1=F value=1 t t o = 5 1=T l e n g t h = 1 1 fsao=4 t t o = 5 1=T l e n g t h = 1 0 f s a o = 1 5 t t o = 5 1=T l e n g t h = 8 fsao=25 t t o = 2 d=F t t o = 5 d=F t t o = 5 d=F t t o = 5 d=F s e g t y p e = s t m t l e n g t h = 1 0 6 cao=54 s e g t y p e = s t m t l e n g t h = 2 9 cao=70 s e g t y p e = s t m t l e n g t h = 2 6 cao=102 s e g t y p e = s t m t l e n g t h = 2 9 cao=131 s e g t y p e = s t m t l e n g t h = 2 5 cao=4  The  initial  segment c o n t r o l  segtype=proc The  initial  Figure  stack  cojgmeilt  F-3.. Towers  main hanoi 4 »A» *B» »C» i f stmt 0 1 « MOVE DISK » FBOM PEG * TO PEG • n me de ma stmt 1 stmt 2 stmt 3 stmt 4 stmt 5  entry;  tto=1 l e n g t h = 2 8 cao=1 o f f s e t = 0  type t a b l e  1  sso=1  entries:  o f Hanoi I n i t i a l  SPAM M a c h i n e  State  164  A p p e n d i x G.  RAIDE Symbol T a b l e  I  Entry  Formats  DSSTE  r—  r  1  I  I  !  ;  |  r  I  type  1  1  T  I count|  link  esto  J  | s i t o j hCo ! T r + r 1 + — T + — T 1 r — i J j | l e v e l | o r d e r | d a t a t y p e i d s s o | p s t o | o s t o J s s t o | a| u|ba|aajbu|au| r  L  L  J  i  L  sito  =  string  hco  =  homonym  type  =  type  1  index  table  chain  J ; .J I  i  1  J  I  i..  1, -  offset  offset  information  field  level  =  the l e x i c l e v e l o f t h e item  order  =  the l e x i c  datatype  =  data t y p e code  dsso  =  t h e SPAM dynamic s t o r a g e stack offset t o the "template d e s c r i p t o r " a s s o c i a t e d with t h i s item  link  =  order  of the item (e.g., v a r i a b l e o r constant)  linkage information table  field  psto  =  t h e symbol level  osto  =  t h e symbol t a b l e o f f s e t level  ssto  =  t h e symbol level  table  offset  t o t h e parent  t o an o f f s p r i n g  offset  at this at  this  to a s i b l i n g a t this  count  =  a c o u n t o f t h e number o f times data-specific h a s been accessed (u) s i n c e s y s t e m i n i t i a l i z a t i o n  esto  =  t h e e v e n t symbol t a b l e offset f o r the deferred a c t i o n ( i f any) a s s o c i a t e d w i t h t h e d a t a - i n c i d e n t s before access (ba), after access (aa), before u p d a t e ( b u ) , and a f t e r u p d a t e (au)  Figure  G-1.  the associated (a) and u p d a t e d  D a t a - S p e c i f i c Symbol T a b l e E n t r y  Format  i  A p p e n d i x G.  BAIDE Symbol  Table  Entry  Formats  165  r  1  I H I I sito I  SSSTE J r 1 1 T r 1 •—i I I type | (count) esto iphrasesj | hco V — r flink | — — - | — — i 1 —r-—A I I i d Jsegtype|dsso| I e| x|be|ae|bx|ax|ph1|ph2|  I  J  T  4  R  n  J  X  site  =  string  index  hco  =  homonym c h a i n  type  =  type  i  J  J  1  table offset offset  information  J  i  I  <may be  (may be  1  L_  _>  null)  null)  field  id  =  identification  field  (e.g., a statement  number)  segtype dsso  = =  segment t y p e code ( e . g . , p r o c e d u r e o r b l o c k ) t h e SPAM dynamic storage stack o f f s e t to the "template d e s c r i p t o r " a s s o c i a t e d with t h i s item  link  =  l i n k a g e i n f o r m a t i o n f i e l d { T h i s f i e l d h a s t h e same format as that of a d a t a - s p e c i f i c symbol t a b l e entry.}  count  -  a count of the number of times the associated segment-specific has been e n t e r e d (e) and e x i t e d (x) s i n c e s y s t e m i n i t i a l i z a t i o n  esto  =  t h e e v e n t symbol t a b l e offset f o r the deferred action ( i f any) associated with the segmenti n c i d e n t s before entry (be), a f t e r entry (ae), b e f o r e e x i t (bx) , and a f t e r e x i t Max)  phrases  =  an offset into the string index t a b l e f o r the s t r i n g p h r a s e s w h i c h c o n s t i t u t e t h e s o u r c e program code o f t h e a s s o c i a t e d s e g m e n t - s p e c i f i c {The o r d e r f o r p r i n t i n g o u t t h e c o d e o f some node i s : phi, then t h e code a s s o c i a t e d w i t h t h e o f f s p r i n g node, f o l l o w e d by ph2.}  Figure  G-2.,  Segment-Specific  Symbol  Table  Entry  Format  appendix G.  BAIDE  Symbol  Table  Entry  Formats  166  ,  r  I  j.  ,  GSTE  4  __  r  |  I I I type I Jsito |hco| 1 r—I I | |gentypelcodejlcj I  I  1  I  sito  = string index table  hco  = homonym chain offset  type  =  :  I  I  offset  type information field  gentype  =  a flag to indicate whether segment- or a data-generic  code  =  the segmentgeneric  lc  =  a code indicating for which language this generic  Figure  G-3.  Generic  the  generic  is  a  or data-generic type code of this  Symbol  Table  Entry  Format  is  a  A p p e n d i x G.  RAIDE Symbol T a b l e  E n t r y Formats  167  ESTE  I 1 I I type I I | s i t o j hcoj r 1 |eco|lco J I |classlie|code|desto|daptr| | | « J1—J J 1—. i i J !  1  :  r  r  sito  string  hco  homonym c h a i n o f f s e t  type  type i n f o r m a t i o n  index  J  1  table  offset  (may be n u l l )  (may be n u l l )  field  class  =  a code to identify the entry as a system default, a language-dependent, or a usersupplied event {The h i e r a r c h y o f s e l e c t i o n i s : u s e r - s u p p l i e d , l a n g u a g e - d e p e n d e n t , a n d system,}  lc  =  i f t y p e = l a n g u a g e - d e p e n d e n t , a code indicating t o which l a n g u a g e t h e e n t r y i s a s s o c i a t e d  code  =  the error code used by SPAM t o i d e n t i f y t h e event i f i t i s an e x c e p t i o n  desto  a symbol t a b l e o f f s e t to the deferred action l a b e l ( i f present) a s s o c i a t e d with t h e event  daptr  a pointer t o the deferred action c i a t e d with t h e event  ( i f any) a s s o -  eco  t h e s y m b o l t a b l e o f f s e t f o r t h e e v e n t c h a i n , which is used to chain together a l l event e n t r i e s i n a s c e n d i n g o r d e r o f t h e i r 'code' f i e l d v a l u e s  lco  t h e s y m b o l t a b l e o f f s e t f o r t h e l a b e l c h a i n , which i s used t o c h a i n t o g e t h e r a l l event e n t r i e s having t h e same d e f e r r e d a c t i o n l a b e l F i g u r e G-4.  Event  Symbol T a b l e E n t r y  Format  Appendix  G,  EAIDE Symbol T a b l e  Entry  Formats  168  r 1 J SFSTE J j. , _ __j I sito|hcoJlc|routine_noJ T  L  1  Z  1  =  string  hco  =  homonym c h a i n  lc  =  a code i n d i c a t i n g f o r which language this is a l a n g u a g e - d e p e n d e n t s y s t e m f u n c t i o n {A s p e c i a l code i n d i c a t e s language-independent functions,}  routine_no  =  a number u s e d t o associate the system with i t s i n t e r n a l r o u t i n e e g u i v a l e n t System  i —  table  1  sito  F i g u r e G-5.  index  L  offset  offset  Function  Symbol T a b l e  1  Entry  function  Format  1  | DDSSTE ) rT i . » |dtype)ubldvsojDSSTEI i i x j I dtype  the type debugging  ub  t h e u p p e r bound v a l u e f o r d e b u g g i n g e n t i t i e s which are d e c l a r e d as a r r a y s {ub - 0 i n d i c a t e s a s i m p l e debugging v a r i a b l e . }  code ( v i z . , i n t e g e r or s p e c i f i c ) e n t i t y d e f i n e d by t h i s e n t r y  of the  the debugging value s t a c k o f f s e t f o r the current v a l u e ( o r v a l u e s , i f ub > 0) o f t h e e n t i t y d e f i n e d by t h i s e n t r y {dvso = n u l l i f t h e scope of the entity i s c u r r e n t l y i n a c c e s s i b l e . The v a l u e o f a s p e c i f i c debugging v a r i a b l e i s the symbol table offset t o t h e u s e r program e n t i t y a s s o c i a t e d w i t h the s p e c i f i c . }  dvso  a f i e l d c o n t a i n i n g t h e same s u b f i e l d s a s t h a t o f a data-specific symbol table entry except t h a t the ' d s s o * f i e l d i s unused {The ' d a t a t y p e values for D i s p e l a r e VARIABLE and PROCEDURE.} 1  DSSTE  Figure  G-6.  Debugging  D a t a - S p e c i f i c Symbol T a b l e  Entry  Format  Appendix  G.  EAIDE  Symbol Table  Entry  Formats  169  DSSSTE ] • x — i \ Jdtype|esto|SSSTE|  dtype  =  t h e type code (viz., deferred action debugging procedure) o f the debugging d e f i n e d by t h i s e n t r y  esto  =  i f d t y p e = d e f e r r e d a c t i o n l a b e l , t h e symbol t a b l e o f f s e t t o an e v e n t a s s o c i a t e d w i t h t h e l a b e l ( A l l deferred actions sharing a label a r e chained t o g e t h e r by t h e M c o ' f i e l d of t h e event symbol t a b l e entry.}  SSSTE  =  a f i e l d c o n t a i n i n g t h e same s u b f i e l d s a s t h a t o f a s e g m e n t - s p e c i f i c symbol t a b l e entry except that the 'dsso' field contains the a d d r e s s o f the o b j e c t c o d e a s s o c i a t e d w i t h t h i s e n t r y (The ' s e g t y p e * v a l u e s f o r D i s p e l a r e COMMAND and ACTION.}  F i g u r e G-7.  l a b e l or entity  D e b u g g i n g S e g m e n t - S p e c i f i c Symbol T a b l e E n t r y Format  170 A p p e n d i x R.  This table  appendix  entries,  an  are  first  and  variables  maintained  their  unimportant  and  necessary mapping  by  for  their  between  RAIDE.  An  contained  in  are  between SPAM and  RAIDE  must d e t e r m i n e from  the  outline of Figure  shown s i n c e  a  program  H-1.  Only  executable  be  accessible  i n two  ways:  by  The  former  is  u s e r and  SPAM  (i.e.,  for  and  its  i s necessary for  when SPAM s i g n a l s  machine s t a t e  <e.g.,  pairs.  utterance  latter  symbol program  entities  Dispel  (i.e.,  user  program  ( l e v e l , order)  The  RAIDE  User  must  a name i n a value).  Entries  examples of  i n t e r f a c i n g between t h e  machine-level  an  actual  interfacing  error,  what s o u r c e - l e v e l  RAIDE  entities  involved) .  Figure Figure  H-2  H-1  identifier  fields:  accessed  i s uniguely  chained  table  d e m o n s t r a t e s how  are  hash t a b l e .  as  by  here.  procedures)  names and  Table  example d e m o n s t r a t e s how  procedure d e c l a r a t i o n s  statements are  are  several  A l g o l - l i k e language i s  variable  are  RAIDE Symbol  presents  The  data-specifics in  Example  A l l symbol thru  entry  the  an  e n t r i e s with  table  by  the  names. the  of  Each  identifier  f i g u r e , each  (diagrammed a  procedures  identical identifiers  a node s h o w i n g  string reference), pointer.  In  offset  and  identifier  offset into  homonym c h a i n .  a s t r i n g index  homonym c h a i n  table  variables  their  hashed t o  i s represented  a character  by  the  only  three of i t s  for  (level,order)  symbol  simplicity  p a i r , and  the  A p p e n d i x H.  Example  Figure by  their  H-3  RAIDE Symbol T a b l e E n t r i e s  d e m o n s t r a t e s how  (level,order)  represented  by  index t a b l e o f f s e t reference),  an  sibling  symbol t a b l e  offset.  'main  and  identifier, the  the  that  G).  symbol  system  All  the  pairs  entry  and  types  user  can  i s located entry  eguivalent  of a c c e s s  to  i s defined  1.  a l l user i d e n t i f i e r s  2.  a  generic,  3.  an  event,  4.  a system f u n c t i o n ,  5.  a l l debugging  has  system  'LINE'.  function  some  of  desired  chaining  thru  deals  be  entries  only  remembered  for  generics,  debugging e n t i t i e s ( c f . ,  Appendix  e n t r i e s are  a  To  connected resolve  along  the as  system  function  the  ambiguities  procedure c a l l e d ' l i n e *  which  is  'LINE*),  a  follows:  i n order of  their static  declarations,  and  v a r i a b l e s and  Thus, i f a user  offset  a  fields.  I t must  contains  a string  o f f s e t , and  table  by  is  character  i n t h i s appendix  entries.  of  define  entry  a  for accessing  symbol t a b l e  also  as  table  symbol  for i d e n t i c a l identifiers.  syntactically hierarchy  table  these  the  accessed  its fields:  symbol  presented  functions,  of  homonym c h a i n {e.g.,  example  of  are  table  simplicity  Given  p r o g r a m symbol t a b l e  the  events,  sibling  symbol  three  offspring  i t s symbol t a b l e  first  with user  only  (level,order)  o f f s p r i n g and  The  Each  (diagrammed f o r  string  1  user i d e n t i f i e r s  pairs.  a node showing  171  procedures.  a procedure c a l l e d ' l i n e ' , S i m i l a r l y , the  user  i t supersedes cannot  define  the a  appendix  H.  debugging  Example BAIDE Symbol T a b l e E n t r i e s procedure  'LINE* w i l l  called  'line*  since  the system  172 function  supersede i t .  lexic _____  lexic order  0  0  1 2  0 0  2  1  source  main: begin _ r o c foo (int bell) ; begin r e a l bar ;  •  end 1 1  1 2  2  0  code  ;  _____<! b e l l ; proc b a r b e l l ; begin pool bar ; end  ;  end Figure  H-1.  Program f o r D e m o n s t r a t i n g  t h e BAIDE Symbol  Table  A p p e n d i x H.  Example BAIDE Symbol T a b l e  Entries  173  I I  H I  I  I  -I  I  r  I r-f m  I  • i -—i |  r — > (foo) I  :  >m (i,<»  —J  J  T — j  i—i—;  I/J  J  i  I ^ I i  r  I I —H  1  t  1  h  i  f  ]  |  i  I  -|  •»  h  +  I I +  I  i  I •  I J  r *  +•  H-2.  I  I  I  J  T—i  i/j i  l  (barbell)  1—i I (1 , 2 ) | / |  r+T  >|4  — — . I I  _—>  m 1—T > i<t— JI (2, 1) 1—i |*+-  identifier hash t a b l e Fiqure  I  I I  I 3  1  —>  j I  r  I «  >m ( 0 , 0 ) i  1 — i  [main)  r+T  |  r  I  ,—> I I  —|  i *—i  1  (bell)  > l t l ( 2 , 0 ) |/|  IH  L—I  +  r+i  1 — i  (1,1)  >m  I I  t  I I + t  r+T  J  r  I I 1  i I  "f  *  ,—> J I  r  symbol t a b l e  Accessing  a Symbol T a b l e E n t r y  t x  (bar)  . _ _ J  entries  by  Identifier  Appendix  H.,  Example RAIDE Symbol T a b l e E n t r i e s  174  level  r  Y  {main}  r->  {bell}  •>  r->  {bar}  > {bar}  J  t r I /  i  •  1  i  -> [ f o o ]  1 r — i  I I 1 r->  {bell}  Y 1  t  1  i  I  r~H  Access  r->  (level,order)  main foo bell bar bell barbell bar Figure H - 3 .  (0,0) (0,0) (0,0) (0,0) (0,0) (0,0) (0,0)  -> I /  {barbell}  i I  seguencies:  (1,0) (U0) (1,0)  (2,0) (2,1)  d,D  (1.2) (1,2)  Accessing  (2,0)  a Symbol  Table  E n t r y by ( l e v e l , o r d e r )  Appendix  H.  In  Example RAIDE Symbol T a b l e  addition  to  user  program  Entries  data-specifics,  symbol t a b l e a l s o c o n t a i n s t h e d e s c r i p t i o n ture  of  a  program.  H-U  demonstrates  the  entries  e a c h symbol  is  node  seven  identification table  offset  table  (which  code,  segment's  offset,  template  offsets  In symbol  table  entries  procedure  has both  entry  index  as procedures),  stack  offset  to  sibling  symbol  table  a n d two  string  index  as c h a r a c t e r  string  phrases.  major  fields  of segment-specific  exceptions  links  to  the  together  t h e two e n t r i e s  Thus, g i v e n  a procedure  procedure.  procedures. (which  procedure) a l l segments  are  connected  links and  a  suboralong  name, i t i s p o s s i b l e  t h e v a r i a b l e scope s t r u c t u r e  s t r u c t u r e of that  are  a data-specific entry  accessible  (which  dinate t o the procedure),  to determine both  such  simplicity  and *hco»  The  a l l data values  homonym c h a i n .  a  entry  a r e n o t used s i n c e segments a r e g e n e r a l l y  by name.  segment-specific  program  code  general, the ' s i t o '  S i n c e each  the  for  table  o f i t s f i e l d s : the  storage  symbol t a b l e o f f s e t ,  (diagrammed  program.  a number o r a s t r i n g  descriptor,  f o r the source  accessed  together  i s either  t h e SPAM dynamic  an o f f s p r i n g  references)  not  field  showing  f o rlabeled segment-specifics  a segment t y p e the  a  table  f o r t h e Towers o f H a n o i  In t h e f i g u r e ,  by  struc-  symbol  of the source  program o f F i g u r e F-1. represented  t h e RAIDE  of the static  T h i s i s done by m a i n t a i n i n g  e n t r i e s f o r each o f t h e s e g m e n t - s p e c i f i c s Figure  175  and  the  static  Appendix r->  H.  Example RAIDE Symbol T a b l e  {main}  r+T  1  i  —  -> {main:  Entries  176  begin)  1—g—r+T—%  I f l p r o c l . 0 | / | t m - M - > [end} 1  L.  1  -X  LXJ  1 I  I I J  ,—>  {hanoi}  +-j  T  T  — —  *~>| t l p r o c l I  1  1  r  -> {proc h a n o i  r  (.. .)  ;}  — , — j - X ^ — ,  1|f|tltl/l l|JL|J  I  J  I  I T  r  M l s t a t j 16|/jt  >  { i f n>0 then}  l*-r->  [ f i :}  I  I  T I—T  T  1  1  1  1  J  | 1 if | 6|/m/|/| L - X |i  _J  1 1  I  f  T  r-  >  i—r-  |2jstmt| 1 7 H | / J f | f - > J—J  L  XX J  X  —  1  i  T+1  r > i—i 1"—i—i—rtT—i I 4 | stmt | 1 9 | / 1 / | t | / J  T  1  r  1—i—rf-i—i  >  {hanoi  1  J  JI  I  {...)}  1  |3|stmt| 18 | t i / } f I - H ~ >  i — l  {;}  •> { p r i n t  — I  {.,.)}  1 I  I F I—"1  {hanoi  {;}  {hanoi  (..,)}  I i  (...)}  |5|stmt|20|/|/|tl/|  Figure  B>4.  Example  S e g m e n t - S p e c i f i c Symbol  Table  Entries  177 Appendix I .  An Example  T h i s appendix presents the  sample  BAIDE Program  t h e BAIDE program s p e c i f i c a t i o n s f o r  program o f F i g u r e F - 1 , Towers  outlines  the  BAIDE  specifications  s p e c i f i c s a n d F i g u r e 1-2 o u t l i n e s specifics. ,  Befer  of  and s e g m e n t - s p e c i f i c  the data-  important graphic 1-2.  fields  tion  table  example names  of  the  are  types i n t h i s  ______ 1 2 3 4 5 6  program's  for i t s  symbol t a b l e e n t r i e s ;  mentioned  here:  entries.  the  Figure  1-1 data-  segment-  t o Appendix G f o r d e s c r i p t i o n s of t h e f i e l d s  and t h e t y p e of  the  same  here.  a r e two f u r t h e r components  not presented  name  o f Hanoi.  See  representation o f the information There  Specification  the i n i t i a l The  bounds  types,  o f a program  in  Figure  specifica-  name t a b l e and  contains  the  identifier  s i n c e t h e r e a r e no u s e r - d e f i n e d  example.  _ l e v e l _ o r d e r _ ______££ 0,0 1,0 2,0 2,1 2,2 2,3  F i g u r e 1-1.  constant constant parameter p a r amet e r parameter parameter Towers  type  name t a b l e i s empty f o r t h i s  name t a b l e s i m p l y  primitive  F i g u r e H-4 f o r a  contained  bounds  o n l y the  dsso _ s i b _ o f f _ 0 1 12 13 14 15  0,2 0,3 4,0 5,0 6,0 0,0  identifier main hanoi n me de ma  o f Hanoi Data S p e c i f i c a t i o n s  A p p e n d i x I... An Example  2l____ 1 2 3 4 5 6 7 8  id  RAIDE Program  segtype  main proc h a n o i proc 1 stmt if-stmt 2 stmt 3 stmt 4 stmt 5 stmt  F i g u r e 1-2.  Specification  dsso j s i b _ o f f _ 0 1 16 6 17 18 19 20  Towers o f Hanoi  0,2 8,3 0,4 0,5 6,0 7,0 0,0 0,0  phrases {main: begin,end} fEEoc ...;,} {_f n>0 t h e n , f i ;}  {,}  {hanoi {print {hanoi {hanoi  Segment  (...) ,;} (...),;} {...),} (...) ,}  Specifications  178  179 Bibliographic Abra Appe Ashb Bair Ball Balz Balz Baue Baye Bern Bier Blai Bobr Boul Brad Brow Brow Bull Che a Clap Clar Conr Conr Conw Conw Cres Cris Cuff Davi Ehr m Evan Evan Ferq ferl Fong Fong Foul Gain Gall Gell Glas Goul Gran Gris Gris Gris Gris Habe Had j Hali  Reference  Index  H a l p 65 ................. 1 Hans 75 .. ..., . . .... .......... 5 . .. ... . Ifi fill ftS IBM 70 IBM 72 ....... 11 Inga 72 i f il I t o h 73 ...... . . . . . . . . . ac. q i J e n s 74 ...... Jflns 6 8 .... ............ ii 73 J o h n 78 . . , « . ,. . . . . . . . . . -. .. a  s  Kirs Knob Knut Koch Kuls Kuls Leca Ledcj Ledg Lest Lest Mann Marc Math Math Mill Mill Moor Morg Moul ORei Orga Palm Panz Pask Peck Pier Poll Pool Pull Pyle Rain Reis Rich Rich Rust  74 75 71 69 69 71  ...... ...... .  . . . . . . . . .  ft7  11  . . _ . 1 ...... . . . ......, . . . . . . . . . Ii 1 25 1-10 ............... ......... Q 75 ...... . . . . . . . . . . . . 87 75 .. . . . . . . 1 17 7 76 ...... . . ......... ........ S inn 71a ...•. .......... 71b ..... . . . . . . . . 1 0 0 1?fi 3 Q 97 73 ...... . . . . . 7S 76 ...... . . . . . . . . . 1 74 ...... . . . . . . . 75 ...... . . . . . . . L. . . 47 76a . . . . . . . . . . . . . AfS ..... ... 1 76b 75 ........... . fi .... 11 71 • c. 67 ...... 76 ...... 73 .. ... .. . . . . . . . . 1 . . 60 77 ,. ............... fi ......... 101 76 fio 73 75 ........... 1SQ & 74 77 .. ... . 73 ...... ... . . . . ..... 3 9 t; fio 6 9 ...... ........ S9 71 73 ...... . . . . . . . . . . . . . 3 75 .............. fi 7fi 69 77 ...... .. ... ....... 76 71 .. ... - 116,121,125,131  ....  fifi  Bibliographic  Reference  Index  Sack 68 .. 10 S a t t 72 .. . 4,5,130 S a t t 75 3 Schw 71 3,27 Scow 72 3 S e i d 68 3 S i t e 71 ............... 4,5,49 S t e p 74 . . . . . . . . . . . . . . . . . . . . 4 S t o c 65 . . . . . . . . . . . . . . . . . . . . 4 S t o c 67 2 T e i t 69 2 Thorn 76 . . . . . . . . . . . . . . . . . . . . 5 UWM 73 .. 4 VanT 74 3,112 VanH 76 ....... 28 Vene 76 . . . . . . . . . . . . . . . . 74,92 V e r s 64 6 V i c t 76a 8,134 V i c t 76b 8 V i c t 77 8, 100, 101 w a t t 74 28 Wein 71 4 wexe 76 12 W i l e 74 6 W i l e 76 .. .. ....... . 2 Wino 75 2 Wolm 72 . . . . . . . . . . . . . . . . . . 5,6 Wort 72 ...... 60 Wulf 73 .... 90 Z e l k 71 59,102,136 Z e l k 73 102 Zimm 67 . . . . . . . . . . . . . . . . . . . . 4  180  181 General  Index  This index uses a collating seguence i n which s p e c i a l symbols precede a l p h a b e t i c c h a r a c t e r s and upper-case letters precede lower-case l e t t e r s . <action> < b r e a k - a c t i o n > .., < c a l l - a c t i o n > .... < c a n c e l - a c t i o n > .. < c a n c e l - l i s t > .,,. <command> ........ <command-list> .,. <compound-action> < d a t a - i n c i d e n t > .. < d e c l a r a t i o n > .... <declaration-list> < d e f i n i t i o n > ..... <display-action> . <exception-list> . <execute-action> . < e x p l a n a t i o n > .... <expression-list> < f o r - a c t i o n > .. ... <generic-^incident> <id-list> > • ••• • < i f - a c t i o n > .. <input-action> < i n q u i r y > .... <integer-declaration> < g u i t ~ a c t i o n > .... <reference-action> <restore-action> . < s a v e - a c t i o n > .... <segment-incident> <segment-gualifier> < s e t - a c t i o n > ...... < s k i p - a c t i o n > ..... < s p e c i f i c > ........ <specific-declaration> . < s p e c i f i c - i n c i d e n t > .... <specific-incident-list> <subscripted-variable> . <system-action> ........ <ungualified-variable> . < u t t e r a n c e > .. < v a r i a b l e > ... < w h a t - l i s t > .. <when> ....... <when-clause> <while-action>  «•  •• • •  • •* • *•  • •*••  •••• • • * *• * * '•*.'**  •  ' • '• •- * «  • • '* • • • * • • *  * a  • •• #  *' • » • * • •  • » • *• • • * * *"  • * ** *  •*  35 36 36 37 37 32 36 # *• • 36 34 31 32 32 •• • • • 37 32 38 31 34 39 34 31 39 39 31 31 40 40 40 40 .34 34 41 41 34 31 34 32 34 42 34 30 34 37 32 32 42  General  Index  182  #ACCESSES s y s t e m f u n c t i o n . . . . . . . . . . . . . . . « . . . . . • . • • . . « • • • • • • 138 •ALLOCATIONS s y s t e m f u n c t i o n • 138 #ENTBIES s y s t e m f u n c t i o n . . . . . . . . . . . . . . . . 138 •EXITS s y s t e m f u n c t i o n • •. • • • 8 tOPDATES s y s t e m f u n c t i o n ,.....,...,.,.....,..,.....,,.139 ABS i n s t r u c t i o n 156 ACCESS d a t a - i n c i d e n t .. • • • » . • 16 ACTION s e g m e n t - g e n e r i c . . . . . . . . . . . . . . . . . . . . . . . . • . • * • • . • • • • • • « 51 ADD i n s t r u c t i o n ...... 156 AIDS s y s t e m ..... . .. 6,121 ALCOR s y s t e m .... 4,115,119 ALLOC i n s t r u c t i o n • *'••'• . 15*7 AND i n s t r u c t i o n . 156 APL l a n g u a g e 120 ARPANET s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 ASSERT i n s t r u c t i o n 158 ATTENTION_INTERRUPT e x c e p t i o n . . . . . . . . . . . . . . . . . . . . . . . . . 1 6 , 3 3 Abramson, Harvey D a v i d . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 A l g o l 60 l a n g u a g e 4,88,115,119,131 A l g o l 68 l a n g u a g e .........,.,,.5,10,15,28,66,71,88,132,133,134 A l g o l - W l a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . 4,5,49,50,88,93,130,131 Appelbe, William F r e d e r i c k .,.,.,.,...,,,,..114 Ara b i c p r o v e r b . . . . . . . . . . . . . . . . . . . . . . . ...... • * . , . . , * , , . . . . . . . .97 A r g u s 700 machine * * , . . . . . . , • * . « , • . . . . . . . . . . . . . . . . . . . . . . 128 Ashby, Gordon . . . . « . . . . . . . . . . . . . . . . . . . . . . . 114 A s p l e l a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75,107,108,110 Aspro language ., .............. 75,92,93,94 A s p r o , i m p l e m e n t a t i o n t o o l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 BAIL s y s t e m . . • , • » » , • • • • , . . , , . , , . . . , « . , , . . , . . . . . . . , « . . . . . . , 6 , 1 2 9 BBN—LISP s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . •. . . . • . • • . 116 BCPL l a n g u a g e . . . . . . . . . . . . . . . . . . ,72,76,93,94,106,107,108,110,130 BCPL-V l a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76,93,106 BCPL-V, i m p l e m e n t a t i o n t o o l 93 BLOCK s e g m e n t - g e n e r i c ....................................14,43 BNF. ».•..•..,'.•..•....,«,,.•....,..,.....,,,•...*,,,,,.,*,..,.•,* ,-30 BUGTRAN s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6,119 Backus—Naur Form . . . . . . . . . . . . . . .... . . . . . , ..... 30 B a i r d , George N 114 B a l l a r d , Alan John .........................................114 B a l z e r , B o b e r t M. • . . . . . , . , , . < , . « « , « . , ..,,.,.9,115 B a s i c l a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .......... 117 B a u e r , F r i e d r i c h L u d w i g ....................................115 Baum, R . I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Bayer, Rudolf 115 Ber ner, E l i z a b e t h .. . . . . , . , , , . » . • . . . . , , . , . , , , . • , . • • , * , , . , , . , 119 B e r n s t e i n , W i l l i a m A. 115 B i e r m a n , A.W. .. 116 B l a i r , James C u r t i s ........................................116 fiobrow, D a n i e l Gureasko .,....,.116 Bochmann, G r e g o r V. ,126 B o u l t o n , P e t e r I . P. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,. •..,, •', •, • 116 B r a d y , P a u l T.'» ,116 Brown, A r t h u r R o b e r t • • 116 1 3  General  Index  183  Brown, P e t e r J . • . . , » » • , . • » • , . , , • « » • • » » . . • « • » « • , « • » • • . • « • • » • 117 B u l l , G«M» • • • • » » • • • • • • • • • • • • « • » • * » • » • • • • * • • • • • • • • • • » • • • • • • • 117 B57 00/B6 700 m a c h i n e . . . . . . . . . . . . . • ••• 128 B6700 machine . .60 C A L L i n s t r uc t i o n . . . . . . . . . . . . . . . . . . . . . . . •. .... .. ... • •... .. 153 CALLEB s y s t e m f u n c t i o n •...•....*•..«<,•«,«.,.,.,137 CAPS sy s tem ... . . . . . . . . ..... • • • , , . « » » • ,... .. ... . •• ........••« 135 CASE i n s t r u c t i o n . . . . . . . . . . . . . . . . . • • • < , • , • , , < . , . , , • « 154 CDC 6600 m a c h i n e .......................................121,125 CMS o p e r a t i n g s y s t e m . . . . . . . . . . . . . . . . . . . . , •. • . . . . . . . . . . . . . . , 127 COMMAND s e g m e n t - g e n e r i c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,51 COMMENT s y s t e m f u n c t i o n 137 CONCAT i n s t r u c t i o n 156 CONSTANT d a t a - g e n e r i c . . . . . . . . . . . . . . . . . . . . . . . . 14,43 CONVEBT i n s t r u c t i o n . . . . . . . . . . . . . . . . . . , . , . . . . . . . . . . . . . ......,158 COPY i n s t r u c t i o n •... •. , •».. * • •, .... • . « . .... ,,...,,.,« ,. 155 CS-1 l a n g u a g e ,.6,133 CTSS o p e r a t i n g s y s t e m .....,.,..,.,....,.,,,....,.,.........118 CUBBENT_BLOCK s y s t e m f u n c t i o n 43 CUR RENT__ EXCEPTION s y s t e m f u n c t i o n 137 CUBBENT_PROCEDUBE s y s t e m f u n c t i o n 43 CUBBENT~PBOCESS s y s t e m f u n c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 CUBB EN T_ STATEMENT s y s t e m f u n c t i o n 43 C U B B E N T _ s e g m e n t - g e n e r i c s y s t e m f u n c t i o n . . . . . . . . . . . . . . . . . . . . 139 CYCLE i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . • • . . . • • • • • • • « • • 154 Cheatham, T . E . , J r . ...........................117 C l a p p , J.A 117  el-Uric^ B*Xi*  •»• •»•• ••••«  •••••••••••••••**•  • • • • * * • • • • .11*7  C o b o l l a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5, 114, 123,1.31,135 C o n r a d i , B e i d a r . . . » • , , . . . . , . , • , . . , , , . , . , , , . . . . . . . , » , » , . * , , , 117 Conrow, Kenneth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Conway, R i c h a r d W a l t e r 117,118,127 C o r a l l a n g u a g e . ,.. , . . . . . . . . . . ,«•*., ...., 6,128 Courant I n s t i t u t e • 130 C r e s s , P a u l H. , ., , , . . . . . . . . 118 C r i s m a n , P.A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 C u f f , R.N. ..... ... . . . . . ..... ... ,. 118 DAD s y s t e m ••••••••«••,',•.»•«•,• .7 ,133,134 DDS s y s t e m • • * • • , • • , • • • • « • . . , , • , . . « . > • , . . , « . . . . . • • »• • • •...» ., 6,128 DEBUG s y s t e m . . . . . . . 119 DEBUG_LEVEL s y s t e m f u n c t i o n • 137 D E C L A I A T I O N _ L I S T s y s t e m f u n c t i o n ...........................137 DECsystem-10 machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... , 128,129 DEFDATA i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ..... 152 DEFERRED_ACTION_LIST s y s t e m f u n c t i o n .,.,..,......,......37,137 DEFINED s y s t e m f u n c t i o n . , . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 DEFSEG i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... ... 152 DEREF i n s t r u c t i o n 155 DITRAN s y s t e m . .... .... . . . . . . . . . ...... •••.,,-*,,,•••,,,,.,, ,.5,127 DIV i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 56 DO— t r a c e ...... . . . . . . . . . . . . . . . . . ,, . ,120 DUMP i n s t r u c t i o n ...........................................158 DWIM s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132  General  Index  184  DYDE s y s t e m . . . . . . . . . . . . . . . . . . . . . . 124 D a r l e y , D. L u c i l l e ..... 119 D a v i d s o n , James Edward . ...... 122,134 * • • D a v i s , A l a n Mark ....... • • * ...... 118,134 D e b u g g i n g S P E c i f i c a t i o n Language 27 D e s j a r d i n s , P i e r r e ..... 125 Dirksen, Paul H •• • .......... 1 18 Dispel * * • ... . . 22,27,74 * • * Dispel, design c r i t e r i a 27,29,52 • •• D i s p e l , e x a m p l e s ....... ........... 42 D i s p e l , s e m a n t i c s ...... . . . . . . . . . . . 30 D i s p e l , s h o r t c o m i n g s ... 54 D i s p e l , s y n t a x ......... ........... 30 • ** D i s p e l , s y n t a x c h a r t ... . . . . . . . . . . 140 •« • D o - A l l Debugger ........ • • * .......... .7 Dynamic D e b u g g i n g - S o u r c e ..........128 ECL s y s t e m . . . . . . . . . . . . . . . . . . . . . . . 115 EMAS s y s t e m . . . . . . . . . . . . . . . . . . . . . . 131 ENTRY s e g m e n t - i n c i d e n t . ... ........ 16 ENVIRONMENTALIST s y s t e m f u n c t i o n .......... .......... 137 EQ i n s t r u c t i o n . . . . . . . . . . . 156 EXDAMS s y s t e m . 6,115,119,122 EXEC I I o p e r a t i n g s y s t e m . . . . . . . . . . 120 EXIT s e g m e n t - i n c i d e n t ... ........ 16 EXITSEG i n s t r u c t i o n . 153 Ehrman, John R. ... .... 59,118 *' * * English 30 * * * E v a n s , Thomas G. • • « . . . . . . . . . . 119 FADEBOG-I s y s t e m ..... .......... 123 FLASC s y s t e m ......... 5,132 FOR i n s t r u c t i o n ... ... . . . . . . . . . . . 67 F e r g u s o n , H. E a r l • • • » * •' »* « • « • • * * *• • • * • • • • • • • • F e r l i n g , H.-D. * * '• •* • * * * * • * • •• * • • • • • • F i s k e r , R.G. ..... • • • » • • • *.* * * *'• * • »: • • »• *' * * F o n g , E l i z a b e t h N. • •• • • • • • ** • * •• • « • • • • • * * » F o r t r a n l a n g u a g e . 5,6 15 ,89,9 1,110, 114, 118, 119, 120, • • i• * • • ,127,128 '* '•' ..*.126 * F o u l k , C l i n t o n R. • • • • • • 4 ***** • * * • * ** • • *• • • • F r a l e y , R o b e r t A. • • • ••« 4 • • • •• • • • • • • * • • • • • •• • • * • • • • Friedman, Paul F r o u d e , James A n t h o n y • ••*••••••••• ./3 GBDG s y s t e m .......... 136 GE i n s t r u c t i o n ....... .......... 156 GET i n s t r u c t i o n ...... . 157 GOTO i n s t r u c t i o n ..... ........... 68 • * * •• • GRAIL s y s t e m ......... ........... 75 • * * * •• GT i n s t r u c t i o n ....... * *• 156 • ** G a i n e s , R. S t o c k t o n .. • ** 120 • • • G a l l e y , S.W. ......... .......... 120 G e l l e r , D e n n i s P. ..., 120 G l a s s , R o b e r t L . ..... 120 G o l d b e r g , R o b e r t P. .. .......... 120 G o u l d , J o h n D. ....... 121 f  1  J  G e n e r a l Index  185  Graham, J . Wesley ,.......................... 118 G r a n d a q e , B. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 G r a n t , E.E. 121 G r i e s , David 115 G r i s h m a n , R a l p h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 G r i s w o l d , Ralph E 121,122 HELPER s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6,125 Habermann, A r i e N i c o l a s s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 H a d j i o a n n o u , M i c h a e l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Hafner, Carole .............134 H a l l , Wayne . . . . . . . . . . . . . 122,134 H a l p e r n , Mark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Ham, F . J . B . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Hanson, D a v i d R. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 Heilman, Robert 114 Hueras, Jon 125 IBM System/360/370 m a c h i n e ...................61,75,114,124,127 IBM 2260 g r a p h i c d i s p l a y t e r m i n a l . . . . . . . . . . . . . . . . . . . . . . . . . . 124 IBM 2741 t y p e w r i t e r t e r m i n a l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 IBM 7090 machine ......119,126 I C L 803 machine 117 IDA o p e r a t i n g s y s t e m 125 I F i n s t r u c t i o n ............... • • • • 67 I F system ..................... . 6,1 27 IMP l a n g u a g e 4,131 INTEELISP system ..... 6,115,116 I n g a l l s , D a n i e l H. H. 123 I n t e r n a t i o n a l B u s i n e s s Machines C o r p o r a t i o n 123 I t o h , D a i j u . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 I z u t a n i , T a k a o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 J e a n e s , David L. ..............,, 116 J e n s e n , K a t h l e e n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 J O n s s o n , Sven I n g v a r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 J o h n s o n , Mark S c o t t ...,.....,,...,,..,.,.,.,,.....,...,,114,123 J o s e p h s , W i l l i a m H. ., 124 kernmerer, R i c h a r d A. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 K i r s c h , B a r r y M. 124 Knobe, B r u c e S. 124 Knuth, Donald E. 124 K o c h e r , W a l l a c e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 K o s t e r , C o r n e l l s H.A. ......................................133 K u l s r u d , H e l e n e E. 125 LANCE s y s t e m 92 LANCE, i m p l e m e n t a t i o n t o o l 92 LANGUAGE s y s t e m f u n c t i o n 137 LBOUND i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 L E i n s t r u c t i o n ............. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 LENGTH i n s t r u c t i o n . 1 57 L I N E s y s t e m f u n c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,,,,,.., 37, 138 LISP/MTS s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6,122,134 LT i n s t r u c t i o n 156 Lampson, B u t l e r W. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9,125 Lecarme, O l i v i e r 125  General  Index  186  L e d g a r d , Henry F. ,125,126 L e e d s , H e r b e r t D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 L e s t e r , B r u c e P, 126 Lindsey, C H .. 133 L i s p l a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15,71,115,122,132,134 MANTIS s y s t e m ., ....................................6,114 MARKSS i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 (UNICODE machine 76 HOD i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 MTS o p e r a t i n g s y s t e m ..,...,..........,.....,..,..,...,.,114,127 MUL i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 M a i l l o u x , Barry J . 133 M a n i s , V i n c e n t S t e w a r t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Mann, George A. ............................................126 Marcotty, Michael ... . . . . , . . , , . . . . . . . . . . . . . ,. 126 M a t h i s , R o b e r t F. . . . . . . 126 McDonald, D a v i d B l a i r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 M c L a t c h i e , B.C.F. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 M e e r t e n s , L a m b e r t G.L.T. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Mencken, Henry L o u i s 87 M i l l e r , Alan 127 M i l l s , H a r l a n D. .............,......,,.,...,,.,..,..,.,,,1,127 Monty P y t h o n ................................................61 Moore, C G . , I I I 127 Moore, C h a r l e s , J r . ................................118 Morgan, Howard L. 127 M o u l t o n , P.G. . . . . . . . . . . . . . . . . . . . . . . . . , . , . . . . , . 127 M u l l e r , M,E. .......... . . . . . . . . , , . , . . . . . . . . . , . , . . . . , . 127 M u l t i c s o p e r a t i n g s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6,135 NAME s y s t e m f u n c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 NE i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 NEATEB2 • ... .... 117 NEG i n s t r u c t i o n 156 NEHBT i n s t r u c t i o n 70 NOOP i n s t r u c t i o n ..........158 NOT i n s t r u c t i o n . . . . , . . . . . . . . . . , , . . . . . . . , . . . , . . . . . . . . . , . * . • • 156 N a t i o n a l S o f t w a r e Works . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 0« B e i l l y , D e n n i s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 OFFENDER 57 OLDS s y s t e m 132 OR i n s t r u c t i o n 156 OS/360 o p e r a t i n g s y s t e m 124,131 OVERFLOW e x c e p t i o n . ,., . ,. ... 16,33 Organick, E l l i o t I r v i n g 128 Owens, James T................, , . . . . , , , , . 115 PAGE s y s t e m f u n c t i o n 37,138 PARAMETER d a t a - g e n e r i c ... 14,43 PARM i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . , , ,.,, ,. ...... . •••,,.... 153 PASCAL/UBC s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88,90,91,128 PEBOG s y s t e m . . . . . . . ....116 PILOT s y s t e m .., 132 PL/C s y s t e m ................4,5,118,127,135 PL/CT s y s t e m , . . . . . 6,127  General  PL/I PL/I  Index  187  Checkout Compiler 6 118 l a n g u a g e . 5,6,15,36,72,84,85,86,88,90,114,115,116,117,118, ..... 120,123,127, 129,131,135 P L / I , r e f l e c t i o n s . . . . . . . . . . . . . . . . , . . . , , . . . . . . . . , . . . . • . . . . . . • 84 PLATO IV d i s p l a y t e r m i n a l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 PLUTO s y s t e m ,............................... 5,116 PL360 l a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . ,114 POODL machine 129 POP i n s t r u c t i o n 155 PEED i n s t r u c t i o n , 156 PROCEDURE d a t a - g e n e r i c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 PROCEDURE s e g m e n t - g e n e r i c . . . . . . . . . . . . . . .......... .,,..... 14, 43 PROCESS s e g m e n t - g e n e r i c . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 PUSHR i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 PUSHV i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 PUT i n s t r u c t i o n 156 Palme, J a c o b . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . . . . . . . .......... 128 P a n z l , D a v i d J . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 P a s c a l l a n g u a g e . 63,71,85,86,87,88,89,90,91,92,107,108,117,122, . ...... 123 ,124,125 Pascal, reflections 87 P a s k o , Henry J o h n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Paul, M 115 Peck, John E.L. ............. 128,130,133,134 P i e r c e , R.H. 128 Poage, J . F . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 P o l l a c k , Bary W i l l i a m 128 P o l o n s k y , I. P. 121 Pomfret, John .............. 1 P o o l e , P.C. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 P u l l a m , J o h n M. 129 Pyle, I . e . . ,129 RAIDE . . . . . . . . . . . . . . . . 9,124 RAIDE, c o n c e p t s ....... ..12 BAIDE, d e s i g n c r i t e r i a 9,13 RAIDE, e x t e n s i o n s . 100 RAIDE, i m p l e m e n t a t i o n . 19,73 RAIDE, i m p o r t a n c e ..... 95 BAIDE, i n t e r n a l d e s i g n 76,77 RAI DE, o v e r v i e w 20 RAIDE, program s p e c i f i c a t i o n example ....,..,..........,..,.,177 BAIDE, s h o r t c o m i n g s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 RAIDE, s y m b o l t a b l e e x a m p l e s ................................170 RANGE s y s t e m f u n c t i o n 137 REFERENCE_POINT s y s t e m f u n c t i o n 138 R a i n , Mark 129 B e i s e r , John F. 129 R i c h a r d s , M a r t i n . . . . . . . . . » . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130 Bun-time A n a l y s i s and I n t e r a c t i v e Debugging E n v i r o n m e n t 9 Rustin, Randall • 130 SDS s y s t e m .....................................114 SELECT i n s t r u c t i o n .........,, , 155 SETBT i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . ,. . , .. .... . . .... ,157 #  General  Index  •J88  SHARE o p e r a t i n g s y s t e m • 126 SIGNAL i n s t r u c t i o n ., . ., ... .... ... .158 SIMDDT s y s t e m ...........................6,128 SKIP i n s t r u c t i o n ................. 154 S L I C E i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 SPACE s y s t e m f u n c t i o n 138 SPAM . . . , . . . . . . . . . . . . . . . . . . . ., 22, 59 SPAM D e s c r i p t i v e O b j e c t L a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 SPAM t a b l e e n t r y f o r m a t s 149 SPAM, a r c h i t e c t u r e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61,62 SPAM, d e s c r i p t o r f o r m a t s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 SPAM, d e s i g n c r i t e r i a , 59,68 SPAM, e x t e n s i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 SPAM, i n s t r u c t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . ,.... .. 1 52 SPAM, o b j e c t program example ...............................159 SPAM , s h o r t c o m i n g s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 SPLINTER s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5,120 STATEMENT s e g m e n t - g e n e r i c ...14,43 STATEMENT_FAILUBE e x c e p t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 STOP i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 STORE i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 SOB i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 SUBSTR i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 SOCC i n s t r u c t i o n ...,......,,.156 SWAP i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 Sackman, H. 130 S a i l language .6,129 S a l m o n s o n , L o r e n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Sampson, W.A. . . . . . , . . . . . . . . . . . , . . . , . . , . . . . . . . . . . . . • • » • • « . • « 116 S a t t e r t h w a i t e , Edwin H a l l o w e l l , J r . . . . . . . . . . . . . . . . . . . . . . . . . 130 S c h m i t t , H. 119 S c h w a r t z , J a c o b T. ..............................131 Scowen, R.S. ..131 S e i d e l , Kenneth P 131 S h a k e s p e a r e , W i l l i a m .. . . . . . . . . . . . . . . . 73,152 Shaw, Mary 135 S i l v e r m a n , M. 116 Simon 117 S i m u l a l a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6,124,128 S i n g e r , Andrew 125 S i n t z o f f , M i c h e l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133,134 S i t b o l language ......................... 123 S i t e s , R i c h a r d L. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 S m i t h , R o n a l d . G. 117 S n o b o l 4 l a n g u a g e . . . . . . . . . . . . . . . ......... 4,15,17,71,121,122,123 Spamdol l a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66,67,152 Spamdol, e x a m p l e s 66,67 S p e c i a l i z e d P r o d e b u g g i n g A b s t r a c t M a c h i n e . . . . . . . . . . . . . . . . . . . 59 S t e p h e n s , P.D. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Stockham, Thomas G. , J r 131 S t r e l e n , Chr. 119 Strunk, William, J r . . . . . . . . . . , , . , , . . . . . . . . . . . . . . . . . 132 Sue l a n g u a g e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63,88,117  General  Index  189  S u l 1 i v a n , J • E . • • • < • • • . • « < • < • • . . . . « . . « . « > « < « . . . « « < « . « « . < « . « « 117 S y m b o l i c D e b u g g i n q System . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 TAB s y s t e m f u n c t i o n .......................138 TALK s y s t e m . .. . ...... .. .. •. • « • « , . , . » . , . ,..*«>........ 6,133 TENEX o p e r a t i n g s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . < . « . . 129 TESTYPE i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 TOPS-10 o p e r a t i n g s y s t e m ,...,........,..,...129 TOSI s y s t e m . . . . . . . . . . . . . . . . . . ..... . . . . . . . . . . . . . . . . . . . . 74 ,92,93 TOSI, i m p l e m e n t a t i o n t o o l . . . . . . . . . . . . . . . . . . 92 TPL l a n g u a g e • . . • . . . , « , . , . . . . , . . , . . . , . . . . , , , , . . , . . , . . . , . • , , . 128 TBUST s y s t e m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74,92,93,133 TRUST, i m p l e m e n t a t i o n t o o l 92 TYPE s y s t e m f u n c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 T e i t e l m a n , Warren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 T e s t P r o c e d u r e Language • 128 T e x t u r e ... . . . . , . , , . , » » . . , , . . . , . . , . . , . . . , . . . , . . . . . , . , . . » 132 T e x t u r e S u p p o r t Group . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 T h i e l m a n n , H« , , , • » • « • • • » • . • • , » , . . , • , » , . « • , « » « » » * . » . • • • • • • • • 119 Thomson, C M 132 T i n d a l l , M i c h a e l H. ...........,,...,.,.,,...........,..,118,134 T o w e r s o f H a n o i SPAM c o d e ........................161 Towers o f H a n o i d a t a s p e c i f i c a t i o n s . . . . . . . . . . . . . . . . . . . . . . . . 177 T o w e r s o f H a n o i i n i t i a l SPAM s t a t e . . . . . . . . . . . . . . . . . . . . . . . . . 163 Towers o f H a n o i segment s p e c i f i c a t i o n s . . . . . . . . . . . . . . . . . . . . . 178 Towers o f H a n o i s o u r c e p r o g r a m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160 UBOUND i n s t r u c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 U NC OL l a n g u a g e .... . ...... ...... ........... 60 U NSPEC f u n c t i o n ,72 UPDATE d a t a - i n c i d e n t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ....... 16 U n i v a c M—460 machine • 119 U n i v a c 1108 m a c h i n e ........................................120 U n i v a c 1110 machine ...132 U n i v e r s i t y o f W i s c o n s i n a t M a d i s o n . . . . . . . . . . . . . . . . . . . . . . . . . 132 VALUE s y s t e m f u n c t i o n ........... 138 VARIABLE d a t a - g e n e r i c 14,43,51 VDL .... 126 Van T a s s e l , D e n n i e L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Venema, T j e e r d • • • , • « • « « • • » • • • » , , « , • » • , • • , , , » » • • • , . . • • « • • » • • . 1 3 3 V i c t o r , Kenneth E. .....................................,133,134 V i e n n a D e f i n i t i o n Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Wagner, R o b e r t A. 127 W a l d s c h m i d t , H. ....... , 119 W a t b o l 1 anguage .... ...,»v.,• •» • • • • •»• • •• • * * • • *• * * * • * 5 W a t f i v l a n g u a g e . . . . . . . . . . . . . . . , . , . . . . . . . . ............. 5,71,118 Wat f o r l a n g u a g e .... .... , . . , . , , . . . . . . . ,. •118 Watt, J.M. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 W e g b r e i t , Ben 117 W e i n b e r g , G e r a l d M. . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . . . 4,126,134 W e x e l b l a t , R i c h a r d L . ...................................12,134 W h i t e , E.B. . 1 3 2 W i e h l e , H.R. ... . • • • • • « • • • • • • • • • • • • • « • • • • • 115 W i l c o x , B r u c e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 W i l c o x , Thomas R. 117,118,134  General  Index  190  W i n o g r a d , T e r r y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 B i r t h , N i k l a u s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Wolffian, B. L. ... . ..,, .. 135 Worcna, S t e v e n L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118,127 Wortroan, D a v i d B a r k l e y ................................135 Wulf, W i l l i a m , .. ,135 Yuval, Gideon 124 ZEEODIVIDE e x c e p t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Z e l k o w i t z , Marvin V 135,136 Zimmerman, L u t h e r L . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 a c c e s s i b l e e n v i r o n m e n t l i s t . . . . . . . . . . . . . . . . . , . . . . . . . . . . , . ... 19 a c t i o n ........................ .....................17,141 a c t i v e d e b u g g i n g .............................,,.....,..,,.,131 analysis 11 a n a l y s i s f u n c t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . ... ........... .. 138 a n a l y s i s i n f o r m a t i o n .. 112 angle brackets ...... 30 a r c h i t e c t u r e , SPAM 61,62 a r i t h m e t i c and s t r i n g i n s t r u c t i o n s 156 a r r a y d e s c r i p t o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65,147 b a s i c machine l e v e l 24,83 batch processing ,. ., 3 b i b l i o g r a p h i c i n d e x . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 bibliography , 114 binary i n s t r u c t i o n s 156 b l o c k depth_counter debugging procedure 47 boldface ........................... 30 bounds name mapping t a b l e . . . . . . . . . . . . . . . . . . . . . . . , . . , , . . , . , . . 78 bounds name t a b l e 78 bounds t a b l e . . . . . . . . . . . . ... . . . . » , , •... 63,66 bounds t a b l e e n t r y 149 braces 30 breakpoint 44,112 bug 112 bug c o n t e s t ., 129 bug f a r m . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 c a l l e r n debugging procedure 55 cancel_deferred_actions d e b u g g i n g p r o c e d u r e . . . . . . . . . . . . . . . . . 51 code a r e a 63 c o n c e p t s , RAIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .,, . .. 12 conclusions 94 condition 143 continual evaluation 35 data access i n s t r u c t i o n s ,154 d a t a d e s c r i p t o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65,145 d a t a - g e n e r i c . . . . . . . . . . . . . . . . . . , ,..... . . . . . . . , , , . . . 14 d a t a - s p e c i f i c symbol t a b l e e n t r y 164 d e b u g g e r g e n e r a t o r s y s t e m ...,..,,,.,,,.,,,.,...,.,.,...,,,.103 debugging ., 112 d e b u g g i n g d a t a - s p e c i f i c symbol t a b l e e n t r y 168 d e b u g g i n g f u n c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 d e b u g g i n g p r o c e d u r e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17,32,36,40 debugging p r o c e s s ............................................ 2  General  Index  191  debugging s e g m e n t - s p e c i f i c symbol t a b l e e n t r y 169 debugging s u b r o u t i n e ......................................... 5 d e b u g g i n g s u p p o r t , l e v e l s .......................,.........,,25 d e b u g g i n g s y s t e m . . . . . . . . . . . . . . . , . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 d e b u g g i n g t e c h n i g u e s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . •...., 3 d e b u g g i n g v a l u e s t a c k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 d e b u g g i n g v a r i a b l e .......................................,31,41 d e b u g g i n g v a r i a b l e l a b e l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 declaration l i s t 18 deferred action 17,32 deferred action l i s t , 17, 32,36, 51 deluxe debugging l e v e l ........26,84 demon 17 descriptor 65 d e s c r i p t o r f o r m a t s , SPAM 144 design c r i t e r i a , D i s p e l 27,29,52 d e s i g n c r i t e r i a , BAIDE , 9,13 d e s i g n c r i t e r i a , SPAM 59,68 d i a gnos i s . . . . . . . . . . . . . . . . . . . . . ... 2 d i a g n o s t i c system ............. . 101 d i a g n o s t i c t r a n s l a t o r ......... • • * .5 d i s p l a y b u f f e r ................ ,. 37 d i s p l a y f o r m a t f u n c t i o n s ...... 138 do_.tr ace d e b u g g i n g p r o c e d u r e ......... .... .. ......... , . . . . . . . 47 d o _ t r a c e _ a l l debugging procedure 47 dssptr ,.... .. ... ........ 64 dump ..................112 dynamic e v a l u a t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . 35 dynamic s t o r a g e s t a c k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 e a c h . . . . . . . . . . . . . . . ... 34 empirical studies 102 entomology ..............................112 environment . . . , . . , . . . , . . . . . . . . . 19,40 e s p t r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 event ... . . . . . . . . . . . . . . . . . 16 e v e n t symbol t a b l e e n t r y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 examples. D i s p e l .............................................,42 e x a m p l e s , Spamdol 66,67 e x a m p l e s , g e n e r i c s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 e x c e p t i o n ...................... , 16 execution p r o f i l e .......... 112 e x e c u t i o n _ p r o f i l e debugging procedure 45 expression . . . . . . . . . . . . 143 expression stack .. 65 e x t e n s i o n s , RAIDE . . . . . . . . . . . . . . ...... . . . . . . . . . . . . . . . . . . •. 100 e x t e n s i o n s , SPAM ...........100 f i g u r e s .. 20,62,77,144,145,147,148,149,150,160,161,163,164,165, . . . . . . . . . . . . . . . . . . . . . . . . . 166,167,168, 169, 172,17 3,174,176,177,178 flow trace ....112 f r e e s t o r a g e a r e a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 f u l l analysis level 26 f u l l d e b u g g i n g l e v e l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26,84 full-stop 30  G e n e r a l Index  192  f u t u r e d i r e c t i o n s ..,..................... .................. 100 g e n e r i c » » « , « « • » . « » , • • , * « • « • « » » » . • • « . , » • « » » » » • • • • » • • • » • • » « » • » 14 g e n e r i c symbol t a b l e e n t r y ................................. ,166 g e n e r i c - i n c i d e n t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ......,. .. 142 g e n e r i c - r e l a t e d s y s t e m f u n c t i o n s ......... . , , . . . . . . . . . . . . . « • • 43 g e n e r i c s , e x a m p l e s ............. ............................. 15 g l o s s a r y ..................,. .................. • . . . » . . . . . . . . 112 homonym c h a i n ........................ . . . , . . . . . . . . 80,170 human f a c t o r s * * , « . . , * , . , . * . . . . . . . . . . ... *..,*,,..••• •.,,,93 i d e n t i f i e r a c c e s s h i e r a r c h y .......... ..........,. .......... 171 i d e n t i f i e r hash t a b l e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 i m p l e m e n t a t i o n t o o l , A s p r o ........... ............ ........... 93 i m p l e m e n t a t i o n t o o l , BCPL-V ................................. 93 i m p l e m e n t a t i o n t o o l , LANCE .................................. 92 i m p l e m e n t a t i o n t o o l , TOSI 92 i m p l e m e n t a t i o n t o o l , TRUST 92 i m p l e m e n t a t i o n t o o l s , r e f l e c t i o n s ........................... 84 i m p l e m e n t a t i o n , RAIDE ........... 19,73 i m p o r t s nee , R AI D E . . . . . . . . . . . . . . . . . . . . . . . . . . ................. 95 incident ..... ... 16 index 181 i n s t r u c t i o n s , SPAM ............. *...........................152 i n t e g e r v a r i a b l e ., 31 i n t e r a c t i v e p r o c e s s i n g ............... ............ ...... ... ,.• 3 i n t e r a c t i v e r e q u e s t mode ................................. 16,36 i n t e r f a c i n g a l a n g u a g e t o RAIDE .......................... 21,80 i n t e r f a c i n g a t r a n s l a t o r t o RAIDE .......... v . . . y . . . . . . . . . 23,82 i n t e r f a c i n g a t r a n s l a t o r t o SPAM 22 i n t e r n a l d e s i g n , RAIDE .......... ................. ......,. 76,77 introduction 1 language-dependent system f u n c t i o n s 139 l a n g u a g e - i n d e p e n d e n t d e b u g g i n g .........,..................... 7 level 64 l e v e l s , d e b u g g i n g s u p p o r t ................................,.... 25 l o g i c e r r o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...... 112 l o w e r - c a s e i d e n t i f i e r s ............... ...... ,..,.....,,...... 30 machine d e b u g g i n g l e v e l . . . . . . . . . . . . . . . . . . . . . . . . . .., 24 machine-language debugging 4 m i s c e l l a n e o u s i n s t r u c t i o n s ................» .... ......... ... 158 motto o f New York s t a t e 100 o b j e c t program example, SPAM ...............................159 o r d e r ......... ............ 64 o u t p u t d i s p l a y d e v i c e . , . . . . . . . . . . . , . , . . . . . . . . . . . . . . . . . . • . . . . 37 o v e r v i e w , RAIDE . . . . . . . . . . . . . . . . . . . . . . . 20 p a s s i v e d e b u g g i n g . . . . . . . . . . . . . . . . . , , . . . , . . . . . . . . • • . , . . . . . . . 131 p o p _ s c s Spamdol p r o c e d u r e 67 postmortem d e b u g g i n g p r o c e d u r e ............................., 49 postmortem dump ..,...,......... ..........,. ... ......, . 4,49,112 print_debug_proc debugging procedure ....,.,.........52 p r i n t _ d e f e r r e d _ a c t i o n s d e b u g g i n g p r o c e d u r e .................. 51 p r o c e s s c o n t r o l s t a c k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 p r o c e s s d e s c r i p t o r .... ............... .... ............,.,,.. 101 profile ,....... 45,113 f  G e n e r a l Index  193  program , . ...... • • • « 1 3 program d e v e l o p m e n t c y c l e 1 program s p e c i f i c a t i o n e x a m p l e , RAIDE 177 g u e s t i o n mark . . . . . . . . . . . . . . . . . » . . . . . . .... .. . . . . . . . . . . . . . . ... 44 q u o t a t i o n s ......... ...... 1,3,4,9, 12,59,61, 73,87,97, 100,152,159 recognition .. ,.......,..... 2 recursion_break d e b u g g i n g p r o c e d u r e . . . . . . . . . . . . . . . . . . . . . . . . . 49 r e f e r e n c e p o i n t ....... , ,,,. 18,40,41 references 114 r e f l e c t i o n s , PL/I 84 r e f l e c t i o n s , Pascal , . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 r e f l e c t i o n s , implementation t o o l s 84 r e v e r s e program e x e c u t i o n ............ . . . . . . . . . . . . . . . . . . . . . . 102 scope stack 64 s c o p e s t a c k e n t r y d e s c r i p t o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 scsptr ,. 64 segment 63 seg ment c o n t r o l i n s t r u c t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . , . 152 segment c o n t r o l s t a c k . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 segment c o n t r o l s t a c k e n t r y d e s c r i p t o r .....................148 segment d e s c r i p t o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . . . . . , . . . 65,144 segment-generic ,14 segment-gualifier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .... 142 segment-specific symbol t a b l e e n t r y . . . . . . . . . . . . . . . . . . . . . . . . 165 s e m a n t i c e r r o r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 semantics, Dispel , 30 s h o r t c o m i n g s . D i s p e l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 s h o r t c o m i n g s , RAIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .. 97 s h o r t c o m i n g s , SPAM ...,..., ..... 70 s i m p i e s y m b o l i c l e v e 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24,83 s n a p s h o t dump . . .'',*"."." ......... 113 specific , ..,14,142 specific variable ... 31 s p e c i f i c - i n c i d e n t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 square brackets 30 ssptr 64 s t a t i c e v a l u a t i o n ........................ 35 s t a t i c s t r u c t u r e . . . . . . . . . . . . . . , , . . . . . . . . . . . . . . . . . . . - , . . . . . 26 s t a t u s f u n c t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 status instructions ,....,,.. . .. , , . , , « . 157 s t o r a g e management i n s t r u c t i o n s 157 s t r i n g a r e a ..........., ,. , . • 79 s t r i n g i n d e x t a b l e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 s t u d e n t c o m p i l e r s ...................., 5 s u b r o u t i n e t r a c e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 s u g g e s t i o n s , t r a n s l a t o r d e s i g n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 summary . . . . . . . . . . . . . . . . . 94 s u p e r _ s e t d e b u g g i n g p r o c e d u r e . . . . . . . . . . . . . . . . . . . . . . . . . . , , . . , 57 syllable , ..63 symbol t a b l e , 79,164 s y m b o l t a b l e e x a m p l e s , RAIDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 s y m b o l i c d e b u g g i n g . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 symbolic debugging l e v e l 26,84  General  Index  194  s y n t a x c h a r t , D i s p e l . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 syntax, D i s p e l ..30 s y s t e m f u n c t i o n s y m b o l t a b l e e n t r y . . . . . . . . . . . . . . . . . . . . . . . . . 168 system f u n c t i o n s 18,137 s y s t e m o f programs .......................13 tables 13, 15,21,22,23,25,29 t e a c h i n g debugging . • •. *. .... 103 t e s t procedure ............. ...................,....... .....101 testing 113 trace .......... .............. ..................,42,113 t r a c e _ p r o c _ c a l l s d e b u g g i n g p r o c e d u r e . . . . . . . . . . . . . . . . . . . . . . . . 46 traceback . . . . . . . . 5, 113 t r a n s i e n t d e f e r r e d a c t i o n ..............................,.,17,38 t r a n s l a t o r design, suggestions 103 transput i n s t r u c t i o n s ...................... 156 trap 17 t y p e name t a b l e .............................................,76 t y p e t a b l e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63,66 type t a b l e entry • • 150 u g l y p r i n t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . • • . . . . . 86 u n a r y i n s t r u c t i o n s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . , . . . , , . 156 undo command . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ,102 u n e x e c u t e a c t i o n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ......,.,,.*.102 u n g u a l i f i e d - v a r i a b l e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ... .. 142 u p p e r - c a s e i d e n t i f i e r s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . ,30 utterance *. . . . . . . . . . . . . . . . . . . . . 140 van den B o s c h , P e t e r N i c o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 van H i j n g a a r d e n , Aad 133 v a r i a b l e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . - . . . . . 142 v a r i a b l e p r o f i l e ...................... 113 variable trace 113 v a r i a b l e _ s c a n d e b u g g i n g p r o c e d u r e . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 v e r S t e e g , B.L. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . , . , . 133 v i r t u a l d e b u g g i n g m a c h i n e ( s e e a l s o SPAH) 59 von G o e t h e , J o h a n n W o l f g a n g 159 w i t t i c i s m s . . . . . . . . . . . . . . . . . . . . . . . . . . . ....y9,27,59,86,97,1 12,120  

Cite

Citation Scheme:

        

Citations by CSL (citeproc-js)

Usage Statistics

Share

Embed

Customize your widget with the following options, then copy and paste the code below into the HTML of your page to embed this item in your website.
                        
                            <div id="ubcOpenCollectionsWidgetDisplay">
                            <script id="ubcOpenCollectionsWidget"
                            src="{[{embed.src}]}"
                            data-item="{[{embed.item}]}"
                            data-collection="{[{embed.collection}]}"
                            data-metadata="{[{embed.showMetadata}]}"
                            data-width="{[{embed.width}]}"
                            async >
                            </script>
                            </div>
                        
                    
IIIF logo Our image viewer uses the IIIF 2.0 standard. To load this item in other compatible viewers, use this url:
http://iiif.library.ubc.ca/presentation/dsp.831.1-0051800/manifest

Comment

Related Items