;;; Copyright (C) 1999, 2001, 2002 Free Software Foundation, Inc.
;;;
-;;; This program is free software; you can redistribute it and/or
-;;; modify it under the terms of the GNU General Public License as
-;;; published by the Free Software Foundation; either version 2, or
-;;; (at your option) any later version.
-;;;
-;;; This program is distributed in the hope that it will be useful,
-;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
-;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;;; General Public License for more details.
-;;;
-;;; You should have received a copy of the GNU General Public License
-;;; along with this software; see the file COPYING. If not, write to
-;;; the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
-;;; Boston, MA 02111-1307 USA
-;;;
-;;; As a special exception, the Free Software Foundation gives permission
-;;; for additional uses of the text contained in its release of GUILE.
-;;;
-;;; The exception is that, if you link the GUILE library with other files
-;;; to produce an executable, this does not by itself cause the
-;;; resulting executable to be covered by the GNU General Public License.
-;;; Your use of that executable is in no way restricted on account of
-;;; linking the GUILE library code into it.
-;;;
-;;; This exception does not however invalidate any other reasons why
-;;; the executable file might be covered by the GNU General Public License.
-;;;
-;;; This exception applies only to the code released by the
-;;; Free Software Foundation under the name GUILE. If you copy
-;;; code from other Free Software Foundation releases into a copy of
-;;; GUILE, as the General Public License permits, the exception does
-;;; not apply to the code that you add in this way. To avoid misleading
-;;; anyone as to the status of such modified files, you must delete
-;;; this exception notice from them.
-;;;
-;;; If you write modifications of your own for GUILE, it is your choice
-;;; whether to permit this exception to apply to your modifications.
-;;; If you do not wish that, delete this exception notice.
+;; This library is free software; you can redistribute it and/or
+;; modify it under the terms of the GNU Lesser General Public
+;; License as published by the Free Software Foundation; either
+;; version 2.1 of the License, or (at your option) any later version.
+;;
+;; This library is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; Lesser General Public License for more details.
+;;
+;; 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
(define-module (ice-9 debugger)
#:use-module (ice-9 debugger command-loop)
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
;;; any other that implements the `debugger-command-loop-*' interface
;;; simply by changing the relevant #:use-module line above.
;;;
-;;; The following new parts add breakpoint support:
-;;;
-;;; (... behaviour) - codification of the things that can happen when
-;;; a breakpoint is hit, regardless of the type of
-;;; the breakpoint
-;;;
-;;; (... breakpoints) - management of breakpoints in general
-;;;
-;;; (... breakpoints procedural) - breakpoints that trigger upon
-;;; application of a specified
-;;; procedure
-;;;
-;;; (... breakpoints source) - breakpoints that trigger upon
-;;; evaluation of a specific source
-;;; expression
-;;;
-;;; (... trap-hooks) - a (slightly) higher-level abstraction of
-;;; Guile's evaluator traps interface
-;;;
-;;; (... trc) - generic tracing interface for debugging tricky code
-;;; using the `printf' method :-)
-;;;
-;;; Note that (... breakpoints range) doesn't work yet. If loaded, it
-;;; seems to cause some kind of explosion in the GOOPS method cache
-;;; calculation code.
-;;;
-;;; - Neil Jerram <neil@ossau.uklinux.net> 2002-10-26
+;;; - Neil Jerram <neil@ossau.uklinux.net> 2002-10-26, updated 2005-07-09
(define *not-yet-introduced* #t)
(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.