Re: [frogs] Scheme debugging and tracing |
[ Thread Index |
Date Index
| More lilynet.net/frogs Archives
]
- To: "frogs@xxxxxxxxxxx" <frogs@xxxxxxxxxxx>
- Subject: Re: [frogs] Scheme debugging and tracing
- From: "Carl D. Sorensen" <c_sorensen@xxxxxxx>
- Date: Thu, 23 Apr 2009 19:08:21 -0600
- Accept-language: en-US
- Acceptlanguage: en-US
- Thread-index: Acm+h0COEy92gQMuSsGdCX5uS4ut1QF8egqO
- Thread-topic: [frogs] Scheme debugging and tracing
Ian,
You're already way beyond me here, so I can't be of any help.
Thanks for taking this on. I think you'll make me a more productive
debugger with this information!
Thanks,
Carl
On 4/16/09 5:33 AM, "Ian Hulin" <ian@xxxxxxxxxxxx> wrote:
> Hi all,
>
> I've been trying to workout how to do some interactive debugging for
> Scheme code. The CG section on this is still basically a
> "to-be-supplied" section so I've been doing a bit of digging around.
>
> There was some really useful information from Nicolas in reply to a
> thread "Debugging/showing internal stuff" on lilypond-devel, but I've
> been thrashing around trying to find out and do more.
>
> I've found sources like
> http://www.gnu.org/software/guile/manual/html_node/Debugging-Examples.html#Deb
> ugging-Examples
> and
> http://www.gnu.org/software/guile/manual/html_node/Traps.html#Traps
> but there is still a lot of "this is can easily be implemented by the
> reader" stuff there.
>
> I want to use this as I've been seeing if I can add some of the TODO's
> in Reinhold's orchestrallily package. (I've already managed to add
> stuff like Tabstaff and RhythmicStaff processing, but I've got to the
> stage where having a Scheme debug setup would be good.)
>
> This is what I know so far:
> You can get to the guile debug prompt by including a debugger.ly in your
> source looking a bit like this:
>
> %-----debugger.ly-----
> #(use-modules (ice-9 debugger) (ice-9 debugging trace) (ice-9 debugging
> steps) (ice-9 debugging ice-9-debugger-extensions) )
>
> # (define (break! proc)
> (install-trap (make <procedure-trap>
> #:procedure proc
> #:behaviour debug-trap)))
>
> # (define (trace! proc)
> (install-trap (make <procedure-trap>
> #:procedure proc
> #:behaviour (list trace-trap
> trace-at-exit))))
>
> # (define (trace-subtree! proc)
> (install-trap (make <procedure-trap>
> #:procedure proc
> #:behaviour (list trace-trap
> trace-until-exit))))
> #(module-define! (resolve-module '(guile-user)) 'lilypond-module
> (current-module))
> #(top-repl)
> #(set-current-module lilypond-module)
> %----------------
>
> One warning - DO NOT use (ice-9 debug) as it has some definitions which
> conflict with (ice-9 debugging *) modules.
>
> Once I get to the guile prompt I can use break! to set a breakpoint in a
> procedure in the code and callit like so:
> guile> (break! oly:make_parallel_staves)
> guile> (oly:make_parallel_staves parser "Test" "FullScore" identity)
> Frame 1 at standard input:22:1
> [oly:make_parallel_staves # "Test" "FullScore" ...]
> debug>
>
> Once you have the debugger prompt you have these commands available (but
> some are buggy)
>
> debug> help
> Type "help" followed by a command name for full documentation.
> Available commands are:
> backtrace
> continue
> down
> evaluate
> finish
> frame
> help
> info
> next
> position
> quit
> step
> up
> debug> help finish
> Continue until evaluation of the current frame is complete, and
> print the result obtained.
> debug>
>
> I've been able to step through a procedure, but can anyone give me some
> pointers to save re-inventing the wheel, so maybe we can provide a
> standard basic Scheme debugging environment and document it in CG.
> Contributions from 'grown-up' developers are welcome to help Frog get up
> to speed.
>
> I'd like to have a debugging environment in place too, so we can maybe
> get nearer to quickly tracking down 'squawk' errors, (typically ending
> "crossing fingers, trying to continue", but where you still get a pdf
> score out of it).
>
> Any tips, pointers, references, Scheme debug code you already have
> written? The aim is to have this documented in the CG.
>
> Cheers,
>
> Ian Hulin
>
>
>
> ---
>
> ----
> Join the Frogs!
>
---
----
Join the Frogs!