4.3BSD/usr/contrib/emacs/lisp/debug.elc


(setq debugger (quote debug))

(defun debug (&rest debugger-args) "\
Enter debugger.  Returns if user says \"continue\".
Arguments are mainly for use when this is called
 from the internals of the evaluator.
You may call with no args, or you may
 pass nil as the first arg and any other args you like.
 In that case, the list of args after the first will 
 be printed into the backtrace buffer." (byte-code "ÎÏ!ˆÃÐ ÑÒ!ÃÓŽŠÔ‹))ˆ‰
ˆ.‡" [debugger-value debugger-match-data debug-on-error nil debug-on-quit debugger-buffer debugger-step-after-exit standard-output print-length debugger-args t inhibit-trace buffer-read-only debug-on-next-call message "Entering debugger..." match-data generate-new-buffer "*Backtrace*" ((byte-code "Â!ˆÃ	!‡" [debugger-buffer debugger-match-data kill-buffer store-match-data] 3)) ((byte-code "É!ˆÊ ˆpËÌ *ˆebˆÍ ˆÎ`ÏÐ!ˆÑÒ!ˆ`\"ˆ@Ó>ƒHÔcˆ@Õ=ƒDÖ×\"ˆØÒ!ˆÙcˆÚ ‚EÇ‚¥@Û=ƒlÜcˆÒ8‰ˆÝ
p\"ˆÞcˆØÒ!ˆßcˆÚ ‚¥@à=ƒ‚ácˆÝÒ8p\"ˆÞc‚¥@=ƒŽâc‚¥…¥Ý@Ç=ƒŸA‚ p\"ˆÞcˆãä!ˆãä!ˆå +‡" [debugger-buffer standard-output print-length debugger-args t debugger-value inhibit-trace nil buffer-read-only pop-to-buffer erase-buffer 50 backtrace debugger-mode delete-region forward-sexp 8 forward-line 1 (lambda debug) "Entering:
" debug backtrace-debug 4 delete-char 42 beginning-of-line exit "Return value: " prin1 10 32 error "Signalling: " "Beginning evaluation of function call form:
" message "" recursive-edit] 19))] 9))

(defun debugger-step-through nil "\
Proceed, stepping through subexpressions of this expression.
Enter another debugger on next entry to eval, apply or funcall." (interactive) (byte-code "ˆ	‰ˆÃÄ!ˆÅ ‡" [debugger-step-after-exit t nil message "Proceding, will debug on next eval or call." exit-recursive-edit] 3))

(defun debugger-continue nil "\
Continue, evaluating this expression without stopping." (interactive) (byte-code "ÀˆÁÂ!ˆÃ ‡" [nil message "Continuing." exit-recursive-edit] 3))

(defun debugger-return-value (val) "\
Continue, specifying value to return.
This is only useful when the value returned from the debugger
will be used, such as in a debug on exit from a frame." (interactive "XReturn value (evaluated): ") (byte-code "È	‰ˆÄÅ
\"ˆÆ!ˆÇ ‡" [debugger-value val t nil princ "Returning " prin1 exit-recursive-edit] 4))

(defun debugger-frame-number nil "\
Return number of frames in backtrace before the one point points at." (byte-code "ŠÂ ˆ`ÃebˆÄÅ``Æ\\\"Ç\"† ÄÅ``Æ\\\"È\"ƒ-ÉÊ!ˆËÌ!‚.͈ÎÌ!ˆÏÐ!ˆgÑUƒCËÌ!‚FËÐ!ˆÎÌ!ˆ`X…Y	T‰ˆ‚3ˆ	*)‡" [opoint count beginning-of-line 0 equal buffer-substring 6 "Signal" "Return" search-forward ":" forward-sexp 1 nil forward-line forward-char 2 40] 15))

(defconst debugger-frame-offset 8 "")

(defun debugger-frame nil "\
Request entry to debugger when this frame exits.
Applies to the frame whose line point is on in the backtrace." (interactive) (byte-code "ĈŠˆÆ Ç	\\
\")ˆgÈUƒ\"ÉÊ!ˆËc)‚#ĈŠ‡" [level debugger-frame-offset t buffer-read-only nil beginning-of-line debugger-frame-number backtrace-debug 32 delete-char 1 42] 6))

(defun debugger-frame-clear nil "\
Do not enter to debugger when this frame exits.
Applies to the frame whose line point is on in the backtrace." (interactive) (byte-code "ÂˆÄ ˆÅ Æ	\\
\")ˆgÇUƒ\"
ÈÉ!ˆÊc)‚#ÂˆÄ ‡" [level debugger-frame-offset nil buffer-read-only beginning-of-line debugger-frame-number backtrace-debug 42 delete-char 1 32] 6))

(fset (quote debugger-eval-expression) (quote eval-expression))

(defvar debugger-mode-map nil)

(if debugger-mode-map nil (let ((loop 32)) (setq debugger-mode-map (make-keymap)) (suppress-keymap debugger-mode-map) (define-key debugger-mode-map "-" (quote negative-argument)) (define-key debugger-mode-map "b" (quote debugger-frame)) (define-key debugger-mode-map "c" (quote debugger-continue)) (define-key debugger-mode-map "r" (quote debugger-return-value)) (define-key debugger-mode-map "u" (quote debugger-frame-clear)) (define-key debugger-mode-map "d" (quote debugger-step-through)) (define-key debugger-mode-map "h" (quote describe-mode)) (define-key debugger-mode-map "q" (quote top-level)) (define-key debugger-mode-map "e" (quote debugger-eval-expression)) (define-key debugger-mode-map " " (quote next-line))))

(defun debugger-mode nil "\
Mode for backtrace buffers, selected in debugger.
\\{debugger-mode-map}
For the r command, when in debugger due to frame being exited,
    the value specified here will be used as the value of that frame.

Note lines starting with * are frames that will
 enter debugger when exited." (byte-code "Æ ˆÇ‰ˆÈ‰ˆ‰ˆÉ!ˆÊ
!‡" [major-mode mode-name truncate-lines t lisp-mode-syntax-table debugger-mode-map kill-all-local-variables debugger-mode "Debugger" set-syntax-table use-local-map] 4))

(defun debug-on-entry (function) "\
Request FUNCTION to invoke debugger each time it is called.
If the user continues, FUNCTION's execution proceeds.
Works by modifying the definition of FUNCTION,
which must be written in Lisp, not predefined." (interactive "aDebug on entry (to function): ") (byte-code "È	K@Ä=ƒ	ÄÅ	A
#BM‚ 	Å	
#M)ˆ	‡" [defn function t nil macro debug-on-entry-1] 6))

(defun cancel-debug-on-entry (function) "\
Undoes effect of debug-on-entry on FUNCTION." (interactive "aCancel debug on entry (to function): ") (byte-code "ˆ	K@Ã=ƒ	ÃÄ	A\"BM‚	Ä	
#M)ˆ	‡" [defn function nil macro debug-on-entry-1] 6))

(defun debug-on-entry-1 (function defn flag) (byte-code "@Æ=†ÇÈ	\"ˆÅÅÉÊ\"@;ƒ-ÉË\"@A@AA@E‰‚:ÉÊ\"@A@D‰ˆÌ
@Í\"=ƒI
‚[ƒVÎÏ
B\"‚[Î
A\"*‡" [defn function tail prec flag nil lambda error "%s not user-defined Lisp function." nthcdr 2 3 equal (debug (quote debug)) nconc (debug (quote debug))] 9))