[Seaside-dev] Debugging in Seaside 3.0 (issue 340)
Michael Lucas-Smith
mlucas-smith at cincom.com
Fri Sep 18 18:29:52 UTC 2009
Hi All,
I'd like to kick off a (hopefully) short discussion on the direction of
walkbacks and debugging with Seaside 3.0.
There is an open issue for debugging and walkbacks, issue 340 (
http://code.google.com/p/seaside/issues/detail?id=340 ) which points out
that the new way exception handling works and continuations work
basically means showing a walkback, let alone debugging, is pretty much
impossible in the way it was done in Seaside 2.8.
You cannot render during an action, so any walkback during an action
cannot be reported to the user without great difficulty. You can render
during the render phase, but this often leads to a mess.
Julian and I had a chat at ESUG about a potential solution to debugging
and walkbacks in Seaside 3.0. Specifically the debugging - instead of
trying to provide a debugging solution in the web browser, we let the
development environment handle it as per normal. This means you'll get a
debugger pop up in the GUI. It means that in production, instead of a
walkback, users get an Internal Server Error of some kind.
So how do we debug then? We have a separate Seaside request showing a
list of debuggable processes, which you can refresh (and probably should
refresh itself either via comet or polling) which you can click on to
see a walkback, terminate, debug, etc.
The question was posed: could this be done and could it be portable?
Tamara Kogan has twisted the WebVelocity web debugger about until it is
demonstrable, so here is the video:
http://dl.getdropbox.com/u/20291/Cincom%20Smalltalk/Seaside-20090918-Debugging.mov
The bad news: Every Smalltalk I looked at handles how the debugger is
opened and how you debug a process completely differently. So while the
technique is something that can be shared around the smalltalks, the
code itself pretty much can't be.
Recommendations:
1) An official "technique" could be published somewhere, on the
seaside wiki perhaps, on how to implement debugging in Seaside for each
implementation.
2) The WAExceptionHandler* classes can be removed to dissuade people
from expecting a way to do this reasonably.
What do people think about this?
Cheers,
Michael
More information about the seaside-dev
mailing list