emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacs-commit] emacs/lisp/emacs-lisp debug.el


From: Lute Kamstra
Subject: Re: [Emacs-commit] emacs/lisp/emacs-lisp debug.el
Date: Tue, 01 Mar 2005 13:16:49 +0100
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

Lute Kamstra <address@hidden> writes:

>> CVSROOT:     /cvsroot/emacs
>> Module name: emacs
>> Branch:      
>> Changes by:  Stefan Monnier <address@hidden> 05/02/28 14:33:50
>>
>> Modified files:
>>      lisp/emacs-lisp: debug.el 
>>
>> Log message:
>>      (inhibit-debug-on-entry): New var.
>>      (debug): Use it.  Move the inhibit-trace earlier.
>>      (debug-entry-code): New const.
>>      (debug-on-entry-1): Use it.
>>
>> CVSWeb URLs:
>> http://savannah.gnu.org/cgi-bin/viewcvs/emacs/emacs/lisp/emacs-lisp/debug.el.diff?tr1=1.67&tr2=1.68&r1=text&r2=text
>
> What about this patch to complete your change?

debugger-frame-number also needed to be changed to deal with the extra
frame introduced by debug-entry-code.  Shall I commit the patch below?

Lute.


Index: lisp/ChangeLog
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/ChangeLog,v
retrieving revision 1.7043
diff -c -r1.7043 ChangeLog
*** lisp/ChangeLog      1 Mar 2005 10:41:45 -0000       1.7043
--- lisp/ChangeLog      1 Mar 2005 12:06:46 -0000
***************
*** 1,3 ****
--- 1,13 ----
+ 2005-03-01  Lute Kamstra  <address@hidden>
+ 
+       * emacs-lisp/debug.el (debug): Skip one more frame in case of
+       debug on entry.
+       (debugger-setup-buffer): Delete one more frame line in case of
+       debug on entry.
+       (debugger-frame-number): Update to use the new text introduced by
+       the 1999-11-03 change.  Skip one more frame in case of debug on
+       entry.
+ 
  2005-03-01  Nick Roberts  <address@hidden>
  
        * progmodes/gdb-ui.el (gdb-get-location): Use a warning instead
Index: lisp/emacs-lisp/debug.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/emacs-lisp/debug.el,v
retrieving revision 1.69
diff -c -r1.69 debug.el
*** lisp/emacs-lisp/debug.el    1 Mar 2005 09:08:47 -0000       1.69
--- lisp/emacs-lisp/debug.el    1 Mar 2005 12:06:46 -0000
***************
*** 95,100 ****
--- 95,105 ----
  
  (defvar inhibit-debug-on-entry nil)
  
+ ;; When you change this, you may also need to change the number of
+ ;; frames that the debugger skips.
+ (defconst debug-entry-code '(if inhibit-debug-on-entry nil (debug 'debug))
+   "Code added to a function to cause it to call the debugger upon entry.")
+ 
  ;;;###autoload
  (setq debugger 'debug)
  ;;;###autoload
***************
*** 189,196 ****
                  (message "%s" (buffer-string))
                  (kill-emacs))
                (if (eq (car debugger-args) 'debug)
!                   ;; Skip the frames for backtrace-debug, byte-code, and 
debug.
!                   (backtrace-debug 3 t))
                (debugger-reenable)
                (message "")
                (let ((standard-output nil)
--- 194,202 ----
                  (message "%s" (buffer-string))
                  (kill-emacs))
                (if (eq (car debugger-args) 'debug)
!                   ;; Skip the frames for backtrace-debug, byte-code,
!                   ;; and debug-entry-code.
!                   (backtrace-debug 4 t))
                (debugger-reenable)
                (message "")
                (let ((standard-output nil)
***************
*** 253,259 ****
    (delete-region (point)
                 (progn
                   (search-forward "\n  debug(")
!                  (forward-line 1)
                   (point)))
    (insert "Debugger entered")
    ;; lambda is for debug-on-call when a function call is next.
--- 259,267 ----
    (delete-region (point)
                 (progn
                   (search-forward "\n  debug(")
!                  (forward-line (if (eq (car debugger-args) 'debug)
!                                    2  ; Remove debug-entry-code frame.
!                                  1))
                   (point)))
    (insert "Debugger entered")
    ;; lambda is for debug-on-call when a function call is next.
***************
*** 426,439 ****
          (count 0))
        (while (not (eq (cadr (backtrace-frame count)) 'debug))
        (setq count (1+ count)))
        (goto-char (point-min))
!       (if (or (equal (buffer-substring (point) (+ (point) 6))
!                    "Signal")
!             (equal (buffer-substring (point) (+ (point) 6))
!                    "Return"))
!         (progn
!           (search-forward ":")
!           (forward-sexp 1)))
        (forward-line 1)
        (while (progn
               (forward-char 2)
--- 434,446 ----
          (count 0))
        (while (not (eq (cadr (backtrace-frame count)) 'debug))
        (setq count (1+ count)))
+       ;; Skip debug-entry-code frame.
+       (when (member '(debug (quote debug)) (cdr (backtrace-frame (1+ count))))
+       (setq count (1+ count)))
        (goto-char (point-min))
!       (when (looking-at "Debugger entered--\\(Lisp error\\|returning 
value\\):")
!       (goto-char (match-end 0))
!       (forward-sexp 1))
        (forward-line 1)
        (while (progn
               (forward-char 2)
***************
*** 692,700 ****
              (setq body (cons (documentation function) body)))
          (fset function (cons 'lambda (cons (car contents) body)))))))
  
- (defconst debug-entry-code '(if inhibit-debug-on-entry nil (debug 'debug))
-   "Code added to a function to cause it to call the debugger upon entry.")
- 
  (defun debug-on-entry-1 (function defn flag)
    (if (subrp defn)
        (error "%s is a built-in function" function)
--- 699,704 ----




reply via email to

[Prev in Thread] Current Thread [Next in Thread]