mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 22:10:21 +02:00
make backtraces prettier
* module/system/vm/debug.scm (print-frames): Clean up a bit, reverting part of the previous change. (The problem was that in the else branch of the conditional, it didn't consume an arg.) In the future I would like to preserve the clean look of the backtraces. It's easier to read that way.
This commit is contained in:
parent
0af34a3f83
commit
8217c9251a
1 changed files with 8 additions and 15 deletions
|
@ -109,13 +109,6 @@
|
|||
out
|
||||
(lp (frame-previous frame) (cons frame out) (1- count)))))))
|
||||
|
||||
(define (location-string file line)
|
||||
(cond ((and file line)
|
||||
(format #f "~:[~5_~;~5d~]" file line))
|
||||
(file
|
||||
(format #f "~:[~5_~" file))
|
||||
(else "<unknown-location>")))
|
||||
|
||||
(define* (print-frames frames #:optional (port (current-output-port))
|
||||
#:key (start-index (1- (length frames))) (width 72)
|
||||
(full? #f))
|
||||
|
@ -124,17 +117,17 @@
|
|||
(let* ((frame (car frames))
|
||||
(source (frame-source frame))
|
||||
(file (and source
|
||||
(or (source:file source) "<stdin>")))
|
||||
(line (and=> source source:line))
|
||||
(loc (location-string file line)))
|
||||
(if (not (equal? file last-file))
|
||||
(format port "~&In ~a:~&" (or file "current input")))
|
||||
(format port "~a:~3d ~v:@y~%"
|
||||
loc i width (frame-call-representation frame))
|
||||
(or (source:file source)
|
||||
"current input")))
|
||||
(line (and=> source source:line)))
|
||||
(if (and file (not (equal? file last-file)))
|
||||
(format port "~&In ~a:~&" file))
|
||||
(format port "~:[~*~6_~;~5d:~]~3d ~v:@y~%" line line
|
||||
i width (frame-call-representation frame))
|
||||
(if full?
|
||||
(print-locals frame #:width width
|
||||
#:per-line-prefix " "))
|
||||
(lp (cdr frames) (1- i) file)))))
|
||||
(lp (cdr frames) (1- i) (or file last-file))))))
|
||||
|
||||
|
||||
;;;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue