X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scm%2Fguile-debugger.scm;h=cde032fed069bdc3400dd8ec66827c2b2b0ce733;hb=90e4d7057f3857da049dfda3d130017d4719bd6b;hp=5e2bfb2ffd903ebc704bd32dd3f95266ddf58486;hpb=bce47474291e85ffa0136e2b0f16cf3025a1350d;p=lilypond.git diff --git a/scm/guile-debugger.scm b/scm/guile-debugger.scm old mode 100755 new mode 100644 index 5e2bfb2ffd..cde032fed0 --- a/scm/guile-debugger.scm +++ b/scm/guile-debugger.scm @@ -1,6 +1,6 @@ ;;;; This file is part of LilyPond, the GNU music typesetter. ;;;; -;;;; Copyright (C) 2010 Ian Hulin +;;;; 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 @@ -15,6 +15,14 @@ ;;;; 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) @@ -22,21 +30,61 @@ #: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)) + #: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))) + #:procedure proc + #:behaviour debug-trap))) +(define (clear-break! proc) + (uninstall-trap (make + #:procedure proc + #:behaviour debug-trap))) -(define (set-trace! proc) + +(define (set-trace-call! proc) (install-trap (make - #:procedure proc - #:behaviour (list trace-trap - trace-at-exit)))) + #: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)))) + #: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))