[racket] inspect variable values in backtrace?

From: Jay McCarthy (jay.mccarthy at gmail.com)
Date: Wed Mar 2 12:53:50 EST 2011

The unstable/debug library has lots of useful functions like this:

http://docs.racket-lang.org/unstable/Debugging.html

I use stuff like this when I'm debugging. I also put my own custom
information in continuation marks and extract it later to learn more
about the context. NB. My mark parameter library provides a nice layer
atop cmarks for this:

http://docs.racket-lang.org/unstable/Mark_Parameters.html

Jay

2011/3/2 Matthias Felleisen <matthias at ccs.neu.edu>:
>
> Create a file 'debug.rkt' in your collects.
>
> It provides a single function:
>
>  ;; tee : X Y -> Y
>
> (define (tee tag val)
>  (displayln `(,tag ,val))
>  val)
>
> When you wish to debug, require debug,rkt and wrap questionable expressions with (tee 'whatdoesitdo some-xpr)
>
>
>
> On Mar 2, 2011, at 11:16 AM, Fred G. Martin wrote:
>
>> Thanks.
>>
>> I figured out how to put printf's into my core predicate, using begin
>> (followed by my predicate-expression).  It turned out that the 3rd (of
>> the ca. 500) items in my hash table first exercised my error, so now
>> I'm on my way to fixing it.
>>
>> Is this what other people do?  Is there a more elegant way?  I guess
>> printf's are universal?
>>
>> Fred
>>
>>
>> On Wed, Mar 2, 2011 at 9:07 AM, Jay McCarthy <jay.mccarthy at gmail.com> wrote:
>>> The backtrace does not include that information. However, the
>>> graphical debugger built in DrRacket will do what you'd like. Using it
>>> can be very time consuming though because it works by annotating your
>>> program and then running it with many more additional operations. Most
>>> of my students swear by it (although I have a hard time remembering to
>>> try it since it wasn't there when I started with Racket.)
>>>
>>> Jay
>>>
>>> 2011/3/2 Fred G. Martin <fredm at cs.uml.edu>:
>>>> Hi all,
>>>> Is it possible to see the bindings of various things in a backtrace?  I am
>>>> having trouble debugging my code because I'm not sure which input is causing
>>>> it to fail -- at some point, I'm trying to take the car of an empty list.
>>>>  The outer thing is a for-each mapping over a hash table with about 500
>>>> entries, and I'm not sure which entry is causing my inner stuff to break.
>>>> Can't use printf, right?... any advice?
>>>> thanks,
>>>> Fred
>>>>
>>>>
>>>> _________________________________________________
>>>>  For list-related administrative tasks:
>>>>  http://lists.racket-lang.org/listinfo/users
>>>>
>>>
>>>
>>>
>>> --
>>> Jay McCarthy <jay at cs.byu.edu>
>>> Assistant Professor / Brigham Young University
>>> http://faculty.cs.byu.edu/~jay
>>>
>>> "The glory of God is Intelligence" - D&C 93
>>>
>>
>> _________________________________________________
>>  For list-related administrative tasks:
>>  http://lists.racket-lang.org/listinfo/users
>
>



-- 
Jay McCarthy <jay at cs.byu.edu>
Assistant Professor / Brigham Young University
http://faculty.cs.byu.edu/~jay

"The glory of God is Intelligence" - D&C 93



Posted on the users mailing list.