diff options
author | Andy Wingo <wingo@pobox.com> | 2015-11-27 12:53:34 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2015-12-01 11:30:54 +0100 |
commit | 2d0214a9b741083ca89d587016c86ad7b4c4bf1b (patch) | |
tree | 15673e1bf257a46474aef88cdc98d40219d15f24 /module | |
parent | c960c76fe0dea22728a69923fa8cdaaaa5dc5edd (diff) | |
download | guile-2d0214a9b741083ca89d587016c86ad7b4c4bf1b.tar.gz |
,registers doesn't use frame-procedure
* module/system/repl/debug.scm (print-registers): Avoid frame-procedure,
and be more useful and print an offset in units of 4 bytes.
Diffstat (limited to 'module')
-rw-r--r-- | module/system/repl/debug.scm | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/module/system/repl/debug.scm b/module/system/repl/debug.scm index 9516af622..e148d444f 100644 --- a/module/system/repl/debug.scm +++ b/module/system/repl/debug.scm @@ -24,6 +24,7 @@ #:use-module (system base language) #:use-module (system vm vm) #:use-module (system vm frame) + #:use-module (system vm debug) #:use-module (ice-9 rdelim) #:use-module (ice-9 pretty-print) #:use-module (ice-9 format) @@ -94,12 +95,13 @@ (format port fmt val)) (format port "~aRegisters:~%" per-line-prefix) - (print "ip = #x~x" (frame-instruction-pointer frame)) - (when (program? (frame-procedure frame)) - (let ((code (program-code (frame-procedure frame)))) - (format port " (#x~x~@d)" code - (- (frame-instruction-pointer frame) code)))) - (newline port) + (let ((ip (frame-instruction-pointer frame))) + (print "ip = #x~x" ip) + (let ((info (find-program-debug-info ip))) + (when info + (let ((addr (program-debug-info-addr info))) + (format port " (#x~x + ~d * 4)" addr (/ (- ip addr) 4))))) + (newline port)) (print "sp = ~a\n" (frame-stack-pointer frame)) (print "fp = ~a\n" (frame-address frame))) |