[Seaside-dev] Debugging in Seaside 3.0 (issue 340)

Michael Lucas-Smith mlucas-smith at cincom.com
Sun Sep 20 17:06:29 UTC 2009


Philippe Marschall wrote:
> 2009/9/20, Michael Lucas-Smith <mlucas-smith at cincom.com>:
>   
>> Lukas Renggli wrote:
>>     
>>>>> 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?
>>>>>
>>>>>           
>>>> I'm not particularly found of it. I don't like clever process tricks.
>>>>
>>>>         
>> Clever process tricks is what used to happen in Seaside 2.8. Now it's
>> not doing anything clever at all.
>> In VisualWorks, when an exception is unhandled, a DebuggerService is
>> created for the process and a DebuggerClient opens up on it. The
>> DebuggerService provides all the controls to manipulate the process.
>>     
>
> We don't have those fancy classes in Pharo.
>   
Exactly the problem - there are different classes in GST, VA, Dolphin. 
This area of Smalltalk is anything but standard.
>   
>> The two options are: let the GUI show the debugger, which is fine for
>> most cases. Capture the service in a collection and let a web page show
>> the debugger - which is the technique I described above.
>>     
>>>> Additionally where do you store the processes and how do you reap
>>>> them?
>>>>         
>> They go in to a collection, you either reap them when you're done
>> debugging (resume or terminate) or you can terminate them before you
>> debug. That's the same as the GUI is right now, which pops up a debug
>> dialog asking you what you want to do with it.
>>     
>
> Where is that collection? How do you remove stuff from this
> collection, do you have to debug every exception? How do you keep this
> collection from filling up and preventing stuff from being released?
>   
The collection is on our WebDebuggerService right now. No you don't have 
to debug every exception. It's the same as having the dialog box pop up 
later, except in a list. Given that it's our list, we could even drop 
"old" services if people cared. Run away masses of exceptions are a mess 
in the GUI anyway.
>>>>  Moreover not all platforms have a comet server.
>>>>         
>> Right, as I said before, the debugging code is platform specific anyway,
>> there's basically nothing reusable - except for the technique itself.
>> Polling is just as acceptable, but there's no reasonable spot in the
>> regular seaside to start polling or cometing for debug exceptions. My
>> preference would be for seaside to not attempt to be a debugger at all -
>> but for us to merely say "and this is how you can implement web
>> debugging if you want to"
>>     
>>>>  I'd rather just
>>>> open a debugger in the image, which is what your eventually going to
>>>> do anyway.
>>>>
>>>>         
>> Except if you don't have a GUI.
>>     
>
> But we do.
>   
VisualWorks, ObjectStudio, Pharo, Squeak, VisualAge, Dolphin all do - 
WebVelocity doesn't.
Is WV unique in this or are other projects interested in ui-less 
development too?

Anyway - we're saying the same thing. There is a technique to do web 
debugging with Seaside that isn't intrusive and isn't required.

I believe all we need to do for issue 340 is to remove the debugger 
handlers? Julian?

Michael


More information about the seaside-dev mailing list