Hi, This maybe an irrelevant question, if so, please point me to the best list to ask. But I am wondering whether you guys can recommend some source level debugger that can POINT ME PRECISELY to where the error was. For example, Allegro CL cannot because many times it tells me that there is an error in a function, but it doesn't tell me which line even if I set their debug flag to 3 the highest level and suppressed everything else, speed, optimization etc. (my function has hundreds of lines then I am frustrated ...)
Best, Yuan
On Sat, May 12, 2012 at 6:08 PM, Yuan Luo yuan.hypnos.luo@gmail.com wrote:
Hi, This maybe an irrelevant question, if so, please point me to the best list to ask. But I am wondering whether you guys can recommend some source level debugger that can POINT ME PRECISELY to where the error was. For example, Allegro CL cannot because many times it tells me that there is an error in a function, but it doesn't tell me which line even if I set their debug flag to 3 the highest level and suppressed everything else, speed, optimization etc. (my function has hundreds of lines then I am frustrated ...)
Which implementation are you using? SLIME on SBCL can give you source location, even inside internal functions (from labels or flet or lambda). Be sure to compile with (safety 3) (debug 3) (speed 1) or so.
That said, this is not the most appropriate forum for this question. After you try the above, ask for help on #lisp, stackoverflow, comp.lang.lisp, etc.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Gilb's Law: Anything you need to quantify can be measured in some way that is superior to not measuring at all.
On 5/12/12 May 12 -5:14 PM, Faré wrote:
On Sat, May 12, 2012 at 6:08 PM, Yuan Luo yuan.hypnos.luo@gmail.com wrote:
Hi, This maybe an irrelevant question, if so, please point me to the best list to ask. But I am wondering whether you guys can recommend some source level debugger that can POINT ME PRECISELY to where the error was. For example, Allegro CL cannot because many times it tells me that there is an error in a function, but it doesn't tell me which line even if I set their debug flag to 3 the highest level and suppressed everything else, speed, optimization etc. (my function has hundreds of lines then I am frustrated ...)
Which implementation are you using? SLIME on SBCL can give you source location, even inside internal functions (from labels or flet or lambda). Be sure to compile with (safety 3) (debug 3) (speed 1) or so.
That said, this is not the most appropriate forum for this question. After you try the above, ask for help on #lisp, stackoverflow, comp.lang.lisp, etc.
Ditto. TRACE is your friend, particularly TRACE with some of the more exotic options, such as
(TRACE (<POSSIBLY-BAD-FUNCTION> :INSIDE <LOCATION-OF-BUG>))
where <LOCATION-OF-BUG> is the location that you get from Allegro telling you where your program failed. There should be a relatively small number of function calls inside this function, if you lisp is written normally (typically no multi-page functions, although there are always exceptions).
Also, you should be able to investigate *from inside the debugger*. If there's a function call (FOO X Y) inside the function that's breaking, execute (FOO X Y) within the debugger, first checking to see what X and Y are in this stack frame, and see what happens. Repeat until your bug is found ;-)
r