;;
;; You should have received a copy of the GNU Lesser General Public
;; License along with this library; if not, write to the Free Software
-;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
(define-module (ice-9 debugger)
#:use-module (ice-9 debugger command-loop)
#:use-module (ice-9 debugger state)
#:use-module (ice-9 debugger utils)
#:use-module (ice-9 format)
+ #:use-module (emacs gds-client)
#:export (debug-stack
debug
debug-last-error
debugger-error
debugger-quit
debugger-input-port
- debugger-output-port)
+ debugger-output-port
+ debug-on-error)
#:no-backtrace)
;;; The old (ice-9 debugger) has been factored into its constituent
(display "There is 1 frame on the stack.\n\n")
(format #t "There are ~A frames on the stack.\n\n" ssize))))
(write-state-short state)
- (debugger-command-loop state))))))))
+ (if (gds-connected?)
+ (gds-command-loop state)
+ (debugger-command-loop state)))))))))
(define (debug)
"Invoke the Guile debugger to explore the context of the last error."
(lambda () output-port)
(lambda (port) (set! output-port port)))))
+;;; {Debug on Error}
+
+(define (debug-on-error syms)
+ "Enable or disable debug on error."
+ (set! lazy-handler-dispatch
+ (if syms
+ (lambda (key . args)
+ (if (memq key syms)
+ (begin
+ (debug-stack (make-stack #t lazy-handler-dispatch)
+ #:with-introduction
+ #:continuable)
+ (throw 'abort key)))
+ (apply default-lazy-handler key args))
+ default-lazy-handler)))
+
;;; (ice-9 debugger) ends here.