|
|
1.1 ! root 1: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; fix.l ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ! 2: ; The fixit debugger modified to use "pearlfixprintfn" and to allow ! 3: ; use of "> fcnname" or "> 'newvalue" in case of an undefined ! 4: ; function or unbound variable respectively. ! 5: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ! 6: ! 7: ; Modified for use with PEARL by Joe Faletti 1/6/82 ! 8: ! 9: ;; (eval-when (compile eval) ! 10: ;; (or (get 'cmumacs 'version) (load 'cmumacs))) ! 11: ; Only the necessary functions are included, below ! 12: ; dv (=defv), ***, lineread, and ty ! 13: ! 14: ;--- dv :: set variable to value ! 15: ; (dv name value) name is setq'ed to value (no evaluation) ! 16: ; (same as defv) ! 17: ; ! 18: (defmacro dv (name value) ! 19: `(setq ,name ',value)) ! 20: ! 21: ;--- *** :: comment macro ! 22: ; ! 23: (defmacro *** (&rest x) nil) ! 24: ! 25: (defmacro lineread (&optional (x nil)) ! 26: `(%lineread ,x)) ! 27: ! 28: (def ty (macro (f) (append '(exec cat) (cdr f)))) ! 29: ! 30: ; LWE 1/11/81 Hack hack.... ! 31: ; ! 32: ; LWE 1/11/81 Bet you didn't know this, but this won't work INTERPRETED, ! 33: ; but Dave assures me it works compiled. (In MACLisp...) ! 34: ; ! 35: (declare (special cmd frame x cnt var init label part incr limit selectq)) ! 36: ! 37: (dv fixfns ! 38: ((*** This is FIXIT written by David Touretzky and adapted to Franz by Don ! 39: Cohen) ! 40: (declare (special framelist rframelist interrupt-handlers handler-labels) ! 41: (special prinlevel prinlength evalhook-switch traced-stuff) ! 42: (special lastword piport hush-debug) ! 43: (*fexpr editf step type)) ! 44: (sstatus feature fixit) ! 45: (*rset t) ! 46: ER%tpl ! 47: fixit ! 48: debug ! 49: debug-iter ! 50: debug1 ! 51: debug-bktrace ! 52: Pdebug-print ! 53: Pdebug-print1 ! 54: debug-findcall ! 55: debug-scanflist ! 56: debug-scanstk ! 57: debug-getframes ! 58: debug-nextframe ! 59: debug-upframe ! 60: debug-dnframe ! 61: debug-upfn ! 62: debug-dnfn ! 63: debug-showvar ! 64: debug-nedit ! 65: debug-insidep ! 66: debug-findusrfn ! 67: debug-findexpr ! 68: debug-replace-function-name ! 69: debug-pop ! 70: debug-where ! 71: debug-sysp ! 72: interrupt-handlers ! 73: handler-labels ! 74: (or (boundp 'traced-stuff) (setq traced-stuff nil)) ! 75: (or (boundp 'evalhook-switch) (setq evalhook-switch nil)) ! 76: (setq hush-debug nil))) ! 77: ! 78: (or (boundp 'traced-stuff) (setq traced-stuff nil)) ! 79: (or (boundp 'evalhook-switch) (setq evalhook-switch nil)) ! 80: (or (boundp 'debug-sysmode) (setq debug-sysmode nil)) ! 81: (setq hush-debug nil) ! 82: ! 83: (*** This is FIXIT written by David Touretzky and adapted to Franz by Don Cohen) ! 84: ! 85: (declare (special framelist rframelist interrupt-handlers handler-labels) ! 86: (special prinlevel prinlength evalhook-switch traced-stuff) ! 87: (special lastword piport hush-debug debug-sysmode) ! 88: (*fexpr editf step type) ! 89: (special system-functions\)) ! 90: ! 91: (sstatus feature fixit) ! 92: ! 93: (*rset t) ! 94: ! 95: (progn 'compile ! 96: (dv ER%tpl fixit) ! 97: (dv ER%brk fixit) ! 98: (dv ER%err fixit) ! 99: ) ! 100: ! 101: (def fixit ! 102: (nlambda (l) ! 103: (prog (piport) ! 104: (do nil (nil) (eval (cons 'debug l)))))) ! 105: ! 106: (def debug ! 107: (nlambda (params) ! 108: (prog (cmd frame framelist rframelist nframe val infile) ! 109: (setq infile t) ! 110: (and evalhook-switch (step nil)) ! 111: (setq rframelist ! 112: (reverse ! 113: (setq framelist ! 114: (or (debug-getframes) ! 115: (list ! 116: (debug-scanstk '(nil) '(debug))))))) ! 117: (setq frame (debug-findexpr (car framelist))) ! 118: ;(tab 0) ! 119: ; top level ones and calls to err and break. ! 120: (cond ! 121: ((and (car params) (not (eq (car params) 'edit))) ! 122: (terpri) ! 123: ; (princ '|;debug |) ! 124: ; (princ params) ! 125: (princ (cadddr params)) ! 126: (cond ((cddddr params) ! 127: (princ '| -- |) ! 128: (princ (cddddr params)))) ! 129: (terpri) ! 130: (go loop))) ! 131: (Pdebug-print1 frame nil) ! 132: (terpri) ! 133: (cond (hush-debug (setq hush-debug nil) (go loop)) ! 134: ((not (memq 'edit params)) (go loop))) ! 135: (drain nil) ! 136: (princ '|type e to edit, <cr> to debug: |) ! 137: (setq val (tyi)) ! 138: (cond ((or (\=& val 69) (\=& val 101)) ! 139: (and (errset (debug-nedit frame)) ! 140: (setq cmd '(ok)) ! 141: (go cmdr))) ! 142: ((or (\=& val 78) (\=& val 110)) (terpri) (debug-pop))) ! 143: loop (terpri) ! 144: (princ ':) ! 145: (cond ((null (setq cmd (lineread))) ! 146: (terpri) (reset))) ! 147: cmdr (cond ! 148: ((dtpr (car cmd)) ! 149: (setq val (eval (car cmd) (cadddr frame))) ! 150: (pearlfixprintfn val) ! 151: ; (print (valform val)) ! 152: (terpri) ! 153: (go loop))) ! 154: (setq nframe (debug1 cmd frame)) ! 155: (and (not (atom nframe)) (setq frame nframe) (go loop)) ! 156: (print (or nframe (car cmd))) ! 157: (princ '" Huh? - type h for help") ! 158: (go loop)))) ! 159: ! 160: (def debug-iter ! 161: (macro (x) ! 162: (cons 'prog ! 163: (cons 'nil ! 164: (cons 'loop ! 165: (cons (list 'setq 'nframe (cadr x)) ! 166: '((setq cnt (|1-| cnt)) ! 167: (and (or (null nframe) (\=& 0 cnt)) ! 168: (return nframe)) ! 169: (setq frame nframe) ! 170: (go loop)))))))) ! 171: ! 172: (def debug1 ! 173: (lambda (cmd frame) ! 174: (prog (nframe val topframe cnt item) ! 175: (setq topframe (car framelist)) ! 176: (or (eq (typep (car cmd)) 'symbol) (return nil)) ! 177: ; if "> name", replace function name with new atom ! 178: (and (eq (car cmd) '>) ! 179: (return (debug-replace-function-name cmd topframe))) ! 180: (and (eq (getchar (car cmd) 1) 'b) ! 181: (eq (getchar (car cmd) 2) 'k) ! 182: (return (debug-bktrace cmd frame))) ! 183: (setq cnt ! 184: (cond ((fixp (cadr cmd)) (cadr cmd)) ! 185: ((fixp (caddr cmd)) (caddr cmd)) ! 186: (t 1))) ! 187: (and (<& cnt 1) (setq cnt 1)) ! 188: (setq item ! 189: (cond ((symbolp (cadr cmd)) (cadr cmd)) ! 190: ((symbolp (caddr cmd)) (caddr cmd)))) ! 191: (and item ! 192: (cond ((memq (car cmd) '(u up)) ! 193: (setq cmd (cons 'ups (cdr cmd)))) ! 194: ((memq (car cmd) '(d dn)) ! 195: (setq cmd (cons 'dns (cdr cmd)))))) ! 196: (selectq (car cmd) ! 197: (top (Pdebug-print1 (setq frame topframe) nil)) ! 198: (bot (Pdebug-print1 (setq frame (car rframelist)) nil)) ! 199: (p (Pdebug-print1 frame nil)) ! 200: (pp (valprint (caddr frame))) ! 201: (where (debug-where frame)) ! 202: (help ! 203: (cond ((cdr cmd) (eval cmd)) ! 204: (t (ty |/usr/lisp/doc/fixit.ref|)))) ! 205: ((\? h) (ty |/usr/lisp/doc/fixit.ref|)) ! 206: ((go ok) ! 207: (setq frame (debug-findexpr topframe)) ! 208: (cond ((eq (caaddr frame) 'debug) ! 209: (freturn (cadr frame) t)) ! 210: (t (fretry (cadr frame) frame)))) ! 211: (pop (debug-pop)) ! 212: (step (setq frame (debug-findexpr frame)) ! 213: (step t) ! 214: (fretry (cadr (debug-dnframe frame)) frame)) ! 215: (redo (and item ! 216: (setq frame ! 217: (debug-findcall item frame framelist))) ! 218: (and frame (fretry (cadr frame) frame))) ! 219: (return (setq val (eval (cadr cmd))) ! 220: (freturn (cadr frame) val)) ! 221: (edit (debug-nedit frame)) ! 222: (editf ! 223: (cond ((null item) ! 224: (setq frame ! 225: (or (debug-findusrfn (debug-nedit frame)) ! 226: (car rframelist)))) ! 227: ((dtpr (getd item)) ! 228: (errset (funcall 'editf (list item)))) ! 229: (t (setq frame nil)))) ! 230: (u (debug-iter (debug-upframe frame)) ! 231: (cond ! 232: ((null nframe) (terpri) (princ '|<top of stack>|))) ! 233: (Pdebug-print1 (setq frame (or nframe frame)) nil)) ! 234: (d (setq nframe ! 235: (or (debug-iter (debug-dnframe frame)) frame)) ! 236: (Pdebug-print1 nframe nil) ! 237: (cond ((eq frame nframe) ! 238: (terpri) ! 239: (princ '|<bottom of stack>|)) ! 240: (t (setq frame nframe)))) ! 241: (up (setq nframe (debug-iter (debug-upfn frame))) ! 242: (cond ! 243: ((null nframe) (terpri) (princ '|top of stack|))) ! 244: (setq frame (or nframe topframe)) ! 245: (Pdebug-print1 frame nil)) ! 246: (dn (setq frame ! 247: (or (debug-iter (debug-dnfn frame)) ! 248: (car rframelist))) ! 249: (Pdebug-print1 frame nil) ! 250: (cond ! 251: ((not (eq frame nframe)) ! 252: (terpri) ! 253: (princ '|<bottom of stack>|)))) ! 254: (ups (setq frame ! 255: (debug-iter ! 256: (debug-findcall item frame rframelist))) ! 257: (and frame (Pdebug-print1 frame nil))) ! 258: (dns (setq frame ! 259: (debug-iter ! 260: (debug-findcall item frame framelist))) ! 261: (and frame (Pdebug-print1 frame nil))) ! 262: (sys (setq debug-sysmode (not debug-sysmode)) ! 263: (patom "sysmode now ")(patom debug-sysmode) (terpr)) ! 264: (otherwise ! 265: (cond ((not (dtpr (car cmd))) ! 266: (*** should there also be a boundp test here) ! 267: (debug-showvar (car cmd) frame)) ! 268: (t (setq frame (car cmd)))))) ! 269: (return (or frame item))))) ! 270: ! 271: (def debug-replace-function-name ! 272: (lambda (cmd frame) (prog (oldname newname errorcall nframe) ! 273: (setq errorcall (caddr frame)) ! 274: (cond ((eq (caddddr errorcall) '|eval: Undefined function |) ! 275: (setq oldname (cadddddr errorcall)) ! 276: (setq newname (cadr cmd)) ! 277: (setq cnt 3) ! 278: (setq frame (debug-iter (debug-dnframe frame))) ! 279: (dsubst newname oldname frame) ! 280: (fretry (cadr frame) frame)) ! 281: ((eq (caddddr errorcall) '|Unbound Variable:|) ! 282: (setq oldname (cadddddr errorcall)) ! 283: (setq newname (eval (cadr cmd))) ! 284: (setq cnt 3) ! 285: (setq frame (debug-iter (debug-dnframe frame))) ! 286: (dsubst newname oldname frame) ! 287: (fretry (cadr frame) frame)) ! 288: ( t (return nil)))))) ! 289: ! 290: (def debug-bktrace ! 291: (lambda (cmd oframe) ! 292: (prog (sel cnt item frame nframe) ! 293: (mapc '(lambda (x) ! 294: (setq sel ! 295: (cons (selectq x ! 296: (f 'fns) ! 297: (a 'sysp) ! 298: (v 'bind) ! 299: (e 'expr) ! 300: (c 'current) ! 301: (otherwise 'bogus)) ! 302: sel))) ! 303: (cddr (explodec (car cmd)))) ! 304: (setq item ! 305: (cond ((eq (typep (cadr cmd)) 'symbol) (cadr cmd)) ! 306: ((eq (typep (caddr cmd)) 'symbol) (caddr cmd)))) ! 307: (cond ((debug-sysp item) (setq sel (cons 'sysp sel))) ! 308: ((not (memq 'sysp sel)) ! 309: (setq sel (cons 'user sel)))) ! 310: (setq cnt ! 311: (cond ((fixp (cadr cmd)) (cadr cmd)) ! 312: ((fixp (caddr cmd)) (caddr cmd)) ! 313: (item 1))) ! 314: (cond ((null cnt) ! 315: (setq frame ! 316: (cond ((memq 'current sel) oframe) ! 317: (t (car rframelist)))) ! 318: (go dbpr)) ! 319: ((null item) ! 320: (setq frame (car framelist)) ! 321: (and (or (not (memq 'user sel)) ! 322: (atom (caddr (car framelist))) ! 323: (not (debug-sysp (caaddr (car framelist))))) ! 324: (setq cnt (|1-| cnt))) ! 325: (setq frame ! 326: (cond ((\=& 0 cnt) frame) ! 327: ((memq 'user sel) ! 328: (debug-iter (debug-dnfn frame))) ! 329: (t (debug-iter (debug-dnframe frame))))) ! 330: (setq frame (or frame (car rframelist))) ! 331: (go dbpr)) ! 332: (t (setq frame (car framelist)))) ! 333: (setq frame ! 334: (cond ((and (\=& cnt 1) ! 335: (not (atom (caddr (car framelist)))) ! 336: (eq item (caaddr (car framelist)))) ! 337: (car framelist)) ! 338: ((debug-iter (debug-findcall item frame framelist))) ! 339: (t (car rframelist)))) ! 340: dbpr (Pdebug-print frame sel oframe) ! 341: (cond ((eq frame (car rframelist)) ! 342: (terpri) ! 343: (princ '|<bottom of stack>|) ! 344: (terpri)) ! 345: (t (terpri))) ! 346: (cond ! 347: ((memq 'bogus sel) ! 348: (terpri) ! 349: (princ (car cmd)) ! 350: (princ '| contains an invalid bk modifier|))) ! 351: (return oframe)))) ! 352: ! 353: (def Pdebug-print ! 354: (lambda (frame sel ptr) ! 355: (prog (curframe) ! 356: (setq curframe (car framelist)) ! 357: loop (cond ((not ! 358: (and (memq 'user sel) ! 359: (not (atom (caddr curframe))) ! 360: (debug-sysp (caaddr curframe)))) ! 361: (Pdebug-print1 curframe sel) ! 362: (and (eq curframe ptr) (princ '| <--- you are here|))) ! 363: ((eq curframe ptr) ! 364: (terpri) ! 365: (princ '| <--- you are somewhere in here|))) ! 366: (and (eq curframe frame) (return frame)) ! 367: (setq curframe (debug-dnframe curframe)) ! 368: (or curframe (return frame)) ! 369: (go loop)))) ! 370: ! 371: (def Pdebug-print1 ! 372: (lambda (frame sel) ! 373: (prog (prinlevel prinlength varlist) ! 374: (and (not (memq 'expr sel)) ! 375: (setq prinlevel 2) ! 376: (setq prinlength 5)) ! 377: (cond ! 378: ((atom (caddr frame)) ! 379: (terpri) ! 380: (princ '| |) ! 381: (pearlfixprintfn (caddr frame)) ! 382: ; (print (valform (caddr frame))) ! 383: (princ '| <- eval error|) ! 384: (return t))) ! 385: (and (memq 'bind sel) ! 386: (cond ((memq (caaddr frame) '(prog lambda)) ! 387: (setq varlist (cadr (caddr frame)))) ! 388: ((and (atom (caaddr frame)) (dtpr (getd (caaddr frame)))) ! 389: (setq varlist (cadr (getd (caaddr frame)))))) ! 390: (mapc (function ! 391: (lambda (v) ! 392: (debug-showvar v ! 393: (or (debug-upframe frame) ! 394: frame)))) ! 395: (cond ((and varlist (atom varlist)) (ncons varlist)) ! 396: (t varlist)))) ! 397: (and (memq 'user sel) ! 398: (debug-sysp (caaddr frame)) ! 399: (return nil)) ! 400: (cond ((memq (caaddr frame) interrupt-handlers) ! 401: (terpri) ! 402: (princ '<------------) ! 403: (print (cadr (assq (caaddr frame) handler-labels))) ! 404: (princ '-->)) ! 405: ((eq (caaddr frame) 'debug) ! 406: (terpri) ! 407: (princ '<------debug------>)) ! 408: ((memq 'fns sel) ! 409: (terpri) ! 410: (and (debug-sysp (caaddr frame)) (princ '| |)) ! 411: (print (caaddr frame))) ! 412: (t (terpri) ! 413: (pearlfixprintfn ! 414: (cond ((eq (car frame) 'eval) (caddr frame)) ! 415: (t (cons (caaddr frame) (cadr (caddr frame)))))) ! 416: ; (print ! 417: ; (valform ! 418: ; (cond ((eq (car frame) 'eval) (caddr frame)) ! 419: ; (t (cons (caaddr frame) (cadr (caddr frame))))))) ! 420: )) ! 421: (or (not (symbolp (caaddr frame))) ! 422: (eq (caaddr frame) (concat (caaddr frame))) ! 423: (princ '| <not interned>|)) ! 424: (return t)))) ! 425: ! 426: (def debug-findcall ! 427: (lambda (fn frame flist) ! 428: (prog nil ! 429: loop (setq frame (debug-nextframe frame flist nil)) ! 430: (or frame (return nil)) ! 431: (cond ((atom (caddr frame)) ! 432: (cond ((eq (caddr frame) fn) (return frame)) (t (go loop)))) ! 433: ((eq (caaddr frame) fn) (return frame)) ! 434: (t (go loop)))))) ! 435: ! 436: (def debug-scanflist ! 437: (lambda (frame fnset) ! 438: (prog nil ! 439: loop (or frame (return nil)) ! 440: (and (not (atom (caddr frame))) ! 441: (memq (caaddr frame) fnset) ! 442: (return frame)) ! 443: (setq frame (debug-dnframe frame)) ! 444: (go loop)))) ! 445: ! 446: (def debug-scanstk ! 447: (lambda (frame fnset) ! 448: (prog nil ! 449: loop (or frame (return nil)) ! 450: (and (not (atom (caddr frame))) ! 451: (memq (caaddr frame) fnset) ! 452: (return frame)) ! 453: (setq frame (evalframe (cadr frame))) ! 454: (go loop)))) ! 455: ! 456: (def debug-getframes ! 457: (lambda nil ! 458: (prog (flist fnew) ! 459: (setq fnew ! 460: (debug-scanstk '(nil) ! 461: (cons 'debug interrupt-handlers))) ! 462: loop (and (not debug-sysmode) ! 463: (not (atom (caddr fnew))) ! 464: (eq (caaddr fnew) 'debug) ! 465: (eq (car (evalframe (cadr fnew))) 'apply) ! 466: (memq (caaddr (evalframe (cadr fnew))) interrupt-handlers) ! 467: (setq fnew (evalframe (cadr fnew)))) ! 468: (and (not debug-sysmode) ! 469: (null flist) ! 470: (eq (car fnew) 'apply) ! 471: (memq (caaddr fnew) interrupt-handlers) ! 472: (setq fnew (evalframe (cadr fnew)))) ! 473: (and (not debug-sysmode) ! 474: (eq (car fnew) 'apply) ! 475: (eq (typep (caaddr fnew)) 'symbol) ! 476: (not (eq (caaddr fnew) (concat (caaddr fnew)))) ! 477: (setq fnew (evalframe (cadr fnew))) ! 478: (setq fnew (evalframe (cadr fnew))) ! 479: (setq fnew (evalframe (cadr fnew))) ! 480: (setq fnew (evalframe (cadr fnew))) ! 481: (go loop)) ! 482: (and (not debug-sysmode) ! 483: (not (atom (caddr fnew))) ! 484: (memq (caaddr fnew) '(evalhook* evalhook)) ! 485: (setq fnew (evalframe (cadr fnew))) ! 486: (go loop)) ! 487: (and (not debug-sysmode) ! 488: (eq (car fnew) 'apply) ! 489: (eq (caaddr fnew) 'eval) ! 490: (cadadr (caddr fnew)) ! 491: (or (not (fixp (cadadr (caddr fnew)))) ! 492: (\= (cadadr (caddr fnew)) -1)) ! 493: (setq fnew (evalframe (cadr fnew))) ! 494: (go loop)) ! 495: (and fnew ! 496: (setq flist (cons fnew flist)) ! 497: (setq fnew (evalframe (cadr fnew))) ! 498: (go loop)) ! 499: (return (nreverse flist))))) ! 500: ! 501: (def debug-nextframe ! 502: (lambda (frame flist sel) ! 503: (prog nil ! 504: (setq flist (cdr (memq frame flist))) ! 505: (and (not (memq 'user sel)) (return (car flist))) ! 506: loop (or flist (return nil)) ! 507: (cond ! 508: ((or (atom (caddr (car flist))) ! 509: (not (debug-sysp (caaddr (car flist))))) ! 510: (return (car flist)))) ! 511: (setq flist (cdr flist)) ! 512: (go loop)))) ! 513: ! 514: (def debug-upframe ! 515: (lambda (frame) ! 516: (debug-nextframe frame rframelist nil))) ! 517: ! 518: (def debug-dnframe ! 519: (lambda (frame) ! 520: (debug-nextframe frame framelist nil))) ! 521: ! 522: (def debug-upfn ! 523: (lambda (frame) ! 524: (debug-nextframe frame rframelist '(user)))) ! 525: ! 526: (def debug-dnfn ! 527: (lambda (frame) ! 528: (debug-nextframe frame framelist '(user)))) ! 529: ! 530: (def debug-showvar ! 531: (lambda (var frame) ! 532: (terpri) ! 533: (princ '| |) ! 534: (princ var) ! 535: (princ '| = |) ! 536: (pearlfixprintfn ! 537: ((lambda (val) (cond ((atom val) '\?) (t (car val)))) ! 538: (errset (eval var (cadddr frame)) nil))))) ! 539: ; (print ! 540: ; (valform ! 541: ; ((lambda (val) (cond ((atom val) '\?) (t (car val)))) ! 542: ; (errset (eval var (cadddr frame)) nil)))))) ! 543: ! 544: (def debug-nedit ! 545: (lambda (frame) ! 546: (prog (val body elem nframe) ! 547: (setq elem (caddr frame)) ! 548: (setq val frame) ! 549: scan (setq val (debug-findusrfn val)) ! 550: (or val (go nofn)) ! 551: (setq body (getd (caaddr val))) ! 552: (cond ((debug-insidep elem body) ! 553: (princ '\=) ! 554: (print (caaddr val)) ! 555: (edite body ! 556: (list 'f (cons '\=\= elem) 'tty:) ! 557: (caaddr val)) ! 558: (return frame)) ! 559: ((or (eq elem (caddr val)) (debug-insidep elem (caddr val))) ! 560: (setq val (debug-dnframe val)) ! 561: (go scan))) ! 562: nofn (setq nframe (debug-dnframe frame)) ! 563: (or nframe (go doit)) ! 564: (and (debug-insidep elem (caddr nframe)) ! 565: (setq frame nframe) ! 566: (go nofn)) ! 567: doit (edite (caddr frame) ! 568: (and (debug-insidep elem (caddr frame)) ! 569: (list 'f (cons '\=\= elem) 'tty:)) ! 570: nil) ! 571: (return frame)))) ! 572: ! 573: (def debug-insidep ! 574: (lambda (elem expr) ! 575: (car (errset (edite expr (list 'f (cons '\=\= elem)) nil))))) ! 576: ! 577: (def debug-findusrfn ! 578: (lambda (frame) ! 579: (cond ((null frame) nil) ! 580: ((and (dtpr (caddr frame)) ! 581: (symbolp (caaddr frame)) ! 582: (dtpr (getd (caaddr frame)))) ! 583: frame) ! 584: (t (debug-findusrfn (debug-dnframe frame)))))) ! 585: ! 586: (def debug-findexpr ! 587: (lambda (frame) ! 588: (cond ((null frame) nil) ! 589: ((and (eq (car frame) 'eval) (not (atom (caddr frame)))) ! 590: frame) ! 591: (t (debug-findexpr (debug-dnframe frame)))))) ! 592: ! 593: (def debug-pop ! 594: (lambda nil ! 595: (prog (frame) ! 596: (setq frame (car framelist)) ! 597: l (cond ((null (setq frame (evalframe (cadr frame))))(reset))) ! 598: (cond ((and (dtpr (caddr frame))(eq (caaddr frame) 'debug)) ! 599: (freturn (cadr frame) nil))) ! 600: (go l)))) ! 601: ! 602: (def debug-where ! 603: (lambda (frame) ! 604: (prog (lev diff nframe) ! 605: (setq lev (- (length framelist) (length (memq frame rframelist)))) ! 606: (setq diff (- (length framelist) lev 1)) ! 607: (Pdebug-print1 frame nil) ! 608: (terpri) ! 609: (cond ((\=& 0 diff) (princ '|you are at top of stack.|)) ! 610: ((\=& 0 lev) (princ '|you are at bottom of stack.|)) ! 611: (t (princ '|you are |) ! 612: (princ diff) ! 613: (cond ((\=& diff 1) (princ '| frame from the top.|)) ! 614: (t (princ '| frames from the top.|))))) ! 615: (terpri) ! 616: (and (or (atom (caddr frame)) (not (eq (car frame) 'eval))) ! 617: (return nil)) ! 618: (setq lev 0) ! 619: (setq nframe frame) ! 620: lp (and (setq nframe (debug-findcall (caaddr nframe) nframe framelist)) ! 621: (setq lev (|1+| lev)) ! 622: (go lp)) ! 623: (princ '|there are |) ! 624: (princ lev) ! 625: (princ '| |) ! 626: (princ (caaddr frame)) ! 627: (princ '|'s below.|) ! 628: (terpri)))) ! 629: ! 630: (def debug-sysp ! 631: (lambda (x) ! 632: (and (sysp x) (symbolp x) (not (dtpr (getd x)))))) ! 633: ! 634: (dv interrupt-handlers (fixit)) ! 635: ! 636: (dv handler-labels ! 637: ((fixit error) ! 638: (debug-ubv-handler ubv) ! 639: (debug-udf-handler udf) ! 640: (debug-fac-handler fac) ! 641: (debug-ugt-handler ugt) ! 642: (debug-wta-handler wta) ! 643: (debug-wna-handler wna) ! 644: (debug-iol-handler iol) ! 645: (debug-*rset-handler rst) ! 646: (debug-mer-handler mer) ! 647: (debug-gcd-handler gcd) ! 648: (debug-gcl-handler gcl) ! 649: (debug-gco-handler gco) ! 650: (debug-pdl-handler pdl))) ! 651: ! 652: ! 653: (or (boundp 'traced-stuff) (setq traced-stuff nil)) ! 654: ! 655: (or (boundp 'evalhook-switch) (setq evalhook-switch nil)) ! 656: ! 657: (setq hush-debug nil) ! 658: ! 659: ! 660: ;; other functions grabbed from other cmu files to make this file complete ! 661: ;; unto itself ! 662: ! 663: ;- from sysfunc.l ! 664: ! 665: (defun build-sysp nil ! 666: (do ((temp (oblist) (cdr temp)) ! 667: (sysfuncs)) ! 668: ((null temp)(setq system-functions\ sysfuncs));atom has ^G at end ! 669: (cond ((getd (car temp)) ! 670: (setq sysfuncs (cons (car temp) sysfuncs)))))) ! 671: ! 672: (defun sysp (x) ; (cond ((memq x system-functions\)t)) ! 673: (memq x '(funcallhook* funcallhook evalhook evalhook* ! 674: continue-evaluation))) ! 675: ! 676: (or (boundp 'system-functions\) (build-sysp)) ! 677: ! 678: (defun fretry (pdlpnt frame) ! 679: (freturn pdlpnt ! 680: (cond ((eq (car frame) 'eval) (eval (caddr frame) (cadddr frame))) ! 681: ((eq (car frame) 'apply) ! 682: (eval `(apply ',(caaddr frame) ',(cadaddr frame)) ! 683: (cadddr frame)))))) ! 684: ! 685: ! 686: ; - from cmu.l ! 687: ! 688: (def %lineread ! 689: (lambda (chan) ! 690: (prog (ans) ! 691: loop (setq ans (cons (read chan 'EOF) ans)) ! 692: (cond ((eq (car ans) 'EOF) (return (reverse (cdr ans))))) ! 693: loop2(cond ((eq 10 (tyipeek chan)) (return (reverse ans))) ! 694: ((memq (tyipeek chan) '(41 93)) ! 695: (tyi chan) ! 696: (go loop2)) ! 697: (t (go loop)))))) ! 698: ! 699: ! 700: (aliasdef 'pearlbreak 'fixit) ! 701: ! 702: ; vi: set lisp:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.