Mercurial > emacs
comparison lisp/emacs-lisp/debug.el @ 43134:ecd029f63cc0
(debugger-frame-offset): Var deleted.
(debugger-frame-number): Figure out the offset directly.
(debugger-setup-buffer): Don't use debugger-frame-offset.
(debugger-frame, debugger-frame-clear): Likewise.
(debugger-jump): Don't alter debugger-frame-offset.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Wed, 06 Feb 2002 15:36:41 +0000 |
parents | c803f1ca9d2b |
children | afe64ec4637c |
comparison
equal
deleted
inserted
replaced
43133:c929176c272b | 43134:ecd029f63cc0 |
---|---|
270 (insert ": ") | 270 (insert ": ") |
271 (prin1 (if (eq (car debugger-args) 'nil) | 271 (prin1 (if (eq (car debugger-args) 'nil) |
272 (cdr debugger-args) debugger-args) | 272 (cdr debugger-args) debugger-args) |
273 (current-buffer)) | 273 (current-buffer)) |
274 (insert ?\n))) | 274 (insert ?\n))) |
275 (when (re-search-forward "^ eval-buffer(" nil t) | 275 ;; After any frame that uses eval-buffer, |
276 (end-of-line) | 276 ;; insert a line that states the buffer position it's reading at. |
277 (insert (format "\n ;;; Reading at buffer position %d" | 277 (save-excursion |
278 (let ((level (+ (debugger-frame-number) | 278 (while (re-search-forward "^ eval-buffer(" nil t) |
279 debugger-frame-offset -4))) | 279 (end-of-line) |
280 (with-current-buffer (nth 2 (backtrace-frame level)) | 280 (insert (format "\n ;;; Reading at buffer position %d" |
281 (with-current-buffer (nth 2 (backtrace-frame (debugger-frame-number))) | |
281 (point)))))) | 282 (point)))))) |
282 (debugger-make-xrefs)) | 283 (debugger-make-xrefs)) |
283 | 284 |
284 (defun debugger-make-xrefs (&optional buffer) | 285 (defun debugger-make-xrefs (&optional buffer) |
285 "Attach cross-references to symbol names in the `*Backtrace*' buffer." | 286 "Attach cross-references to symbol names in the `*Backtrace*' buffer." |
373 (setq debugger-value val) | 374 (setq debugger-value val) |
374 (princ "Returning " t) | 375 (princ "Returning " t) |
375 (prin1 debugger-value) | 376 (prin1 debugger-value) |
376 (exit-recursive-edit)) | 377 (exit-recursive-edit)) |
377 | 378 |
378 ;; Chosen empirically to account for all the frames | |
379 ;; that will exist when debugger-frame is called | |
380 ;; within the first one that appears in the backtrace buffer. | |
381 ;; Assumes debugger-frame is called from a key; | |
382 ;; will be wrong if it is called with Meta-x. | |
383 (defconst debugger-frame-offset 8 "") | |
384 | |
385 (defun debugger-jump () | 379 (defun debugger-jump () |
386 "Continue to exit from this frame, with all debug-on-entry suspended." | 380 "Continue to exit from this frame, with all debug-on-entry suspended." |
387 (interactive) | 381 (interactive) |
388 ;; Compensate for the two extra stack frames for debugger-jump. | 382 (debugger-frame) |
389 (let ((debugger-frame-offset (+ debugger-frame-offset 2))) | |
390 (debugger-frame)) | |
391 ;; Turn off all debug-on-entry functions | 383 ;; Turn off all debug-on-entry functions |
392 ;; but leave them in the list. | 384 ;; but leave them in the list. |
393 (let ((list debug-function-list)) | 385 (let ((list debug-function-list)) |
394 (while list | 386 (while list |
395 (fset (car list) | 387 (fset (car list) |
412 "Return number of frames in backtrace before the one point points at." | 404 "Return number of frames in backtrace before the one point points at." |
413 (save-excursion | 405 (save-excursion |
414 (beginning-of-line) | 406 (beginning-of-line) |
415 (let ((opoint (point)) | 407 (let ((opoint (point)) |
416 (count 0)) | 408 (count 0)) |
409 (while (not (eq (cadr (backtrace-frame count)) 'debug)) | |
410 (setq count (1+ count))) | |
417 (goto-char (point-min)) | 411 (goto-char (point-min)) |
418 (if (or (equal (buffer-substring (point) (+ (point) 6)) | 412 (if (or (equal (buffer-substring (point) (+ (point) 6)) |
419 "Signal") | 413 "Signal") |
420 (equal (buffer-substring (point) (+ (point) 6)) | 414 (equal (buffer-substring (point) (+ (point) 6)) |
421 "Return")) | 415 "Return")) |
442 (save-excursion | 436 (save-excursion |
443 (beginning-of-line) | 437 (beginning-of-line) |
444 (if (looking-at " *;;;\\|[a-z]") | 438 (if (looking-at " *;;;\\|[a-z]") |
445 (error "This line is not a function call"))) | 439 (error "This line is not a function call"))) |
446 (beginning-of-line) | 440 (beginning-of-line) |
447 (let ((level (debugger-frame-number))) | 441 (backtrace-debug (debugger-frame-number) t) |
448 (backtrace-debug (+ level debugger-frame-offset) t)) | |
449 (if (= (following-char) ? ) | 442 (if (= (following-char) ? ) |
450 (let ((buffer-read-only nil)) | 443 (let ((buffer-read-only nil)) |
451 (delete-char 1) | 444 (delete-char 1) |
452 (insert ?*))) | 445 (insert ?*))) |
453 (beginning-of-line)) | 446 (beginning-of-line)) |
459 (save-excursion | 452 (save-excursion |
460 (beginning-of-line) | 453 (beginning-of-line) |
461 (if (looking-at " *;;;\\|[a-z]") | 454 (if (looking-at " *;;;\\|[a-z]") |
462 (error "This line is not a function call"))) | 455 (error "This line is not a function call"))) |
463 (beginning-of-line) | 456 (beginning-of-line) |
464 (let ((level (debugger-frame-number))) | 457 (backtrace-debug (debugger-frame-number) nil) |
465 (backtrace-debug (+ level debugger-frame-offset) nil)) | |
466 (if (= (following-char) ?*) | 458 (if (= (following-char) ?*) |
467 (let ((buffer-read-only nil)) | 459 (let ((buffer-read-only nil)) |
468 (delete-char 1) | 460 (delete-char 1) |
469 (insert ? ))) | 461 (insert ? ))) |
470 (beginning-of-line)) | 462 (beginning-of-line)) |