X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fguile-debugger.scm;h=cde032fed069bdc3400dd8ec66827c2b2b0ce733;hb=HEAD;hp=7be49945309dfeb6897961ddf1caede0bdc3f954;hpb=1dab1e3680bf7cf154f640be6180800a6ecd0a06;p=lilypond.git diff --git a/scm/guile-debugger.scm b/scm/guile-debugger.scm old mode 100755 new mode 100644 index 7be4994530..cde032fed0 --- a/scm/guile-debugger.scm +++ b/scm/guile-debugger.scm @@ -1,26 +1,90 @@ -(define-module ( scm guile-debugger) - #:use-module (ice-9 debugger) - #:use-module (ice-9 debugging traps) - #:use-module (ice-9 debugging trace) - #:use-module (ice-9 debugging steps) - #:use-module (ice-9 debugging ice-9-debugger-extensions) - #:use-module (ice-9 readline)) - #:export ( set-break! - set-trace! - set-trace-subtree) +;;;; This file is part of LilyPond, the GNU music typesetter. +;;;; +;;;; Copyright (C) 2010--2015 Ian Hulin +;;;; +;;;; LilyPond 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 3 of the License, or +;;;; (at your option) any later version. +;;;; +;;;; LilyPond 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 LilyPond. If not, see . + +;;; Commentary: + +;;; This file provides the support routines for a guile debugger called +;;; from an environment controlled by LilyPond. It works in conjunction +;;; with file guile-debugger.ly. + +;;; Code: + +(define-module (scm guile-debugger) + #:use-module (ice-9 debugger) + #:use-module (ice-9 debugging traps) + #:use-module (ice-9 debugging trace) + #:use-module (ice-9 debugging steps) + #:use-module (ice-9 debugging ice-9-debugger-extensions) + #:use-module (ice-9 readline) + #:export (set-break! + clear-break! + set-trace-call! + clear-trace-call! + set-trace-subtree! + clear-trace-subtree! + debug-help)) + (define (set-break! proc) - (install-trap (make - #:procedure proc - #:behaviour debug-trap))) + (install-trap (make + #:procedure proc + #:behaviour debug-trap))) +(define (clear-break! proc) + (uninstall-trap (make + #:procedure proc + #:behaviour debug-trap))) + -(define (set-trace! proc) - (install-trap (make - #:procedure proc - #:behaviour (list trace-trap - trace-at-exit)))) +(define (set-trace-call! proc) + (install-trap (make + #:procedure proc + #:behaviour (list trace-trap + trace-at-exit)))) +(define (clear-trace-call! proc) + (uninstall-trap (make + #:procedure proc + #:behaviour (list trace-trap + trace-at-exit)))) (define (set-trace-subtree! proc) - (install-trap (make - #:procedure proc - #:behaviour (list trace-trap - trace-until-exit)))) + (install-trap (make + #:procedure proc + #:behaviour (list trace-trap + trace-until-exit)))) + +(define (clear-trace-subtree! proc) + (uninstall-trap (make + #:procedure proc + #:behaviour (list trace-trap + trace-until-exit)))) + +(define (debug-help ) + (display "\nYou may add the following commands as debugging statements in your source file\n") + (display "or enter the set-x! commands at the guile prompt:\n\n") + (display " (set-break! )\n") + (display " causes guile to enter debugger on a call to \n") + (display " (clear-break! )\n") + (display " disables a breakpoint previously set on a call to \n") + (display " (set-trace-call! )\n") + (display " prints out a line when Scheme enters or exits \n") + (display " (clear-trace-call! )\n") + (display " turns off tracing calls to \n") + (display " (set-trace-subtree! )\n") + (display " displays each line of Scheme code executed during a call to \n") + (display " (clear-trace-subtree! )\n") + (display " turns off tracing code during calls to \n\n") + (display "Enter help at the guile debug> prompt for further information on debugger commands\n") + (newline))