Archaeopteryx Software, Inc.
Take Flight!Search

Home
Wing IDE
News
Support
About Us
Python
Open Source
Store

 Search:
 
 Advanced Search




[wingide-users] Debugging Zope's FTP server with WingIDE

Andreas Jung andreas at andreas-jung.com
Thu, 26 Sep 2002 18:44:29 +0200


This sounds promising. I will give it a try the next time
when I have to fix bugs deep in Zope.

Thanks,
Andreas

--On Donnerstag, 26. September 2002 11:20 -0400 "Stephan R.A. Deibel" 
<sdeibel@wingide.com> wrote:

> On Thu, 26 Sep 2002, Andreas Jung wrote:
>> Well, I have been a member of the Zope coreteam and I have been
>> on the FTP server stuff of Zope a lot. So I am curious if WingIDE
>> could have done my life more easier ;-)
>
> Yes, Wing can debug Zope itself.  The approach is somewhat different than
> debugging client code and there is the caveat that you need to set up Zope
> to be single threaded during debugging to avoid unpredictable stopping on
> breakpoints/exceptions (only one thread in the thread pool will be
> debugged).
>
> Here are the basic steps:
>
> 1) Install Zope + Wing
>
> 2) Copy wingdbstub.py from the Wing installation into your Zope code
>
> 3) Edit your code to add 'import wingdbstub' somewhere before the code
>    you want to debug.
>
> 4) Zope needs to run with the -t 0 option, e.g. with a 'start' script
>    like this:
>
># ! /bin/sh
> reldir=`dirname $0`
> ZOPEHOME=`cd $reldir; pwd`
> export ZOPEHOME
> exec $ZOPEHOME/bin/python $ZOPEHOME/z2.py -D "$@" -Z '' -t 0
>
> 5) Run Wing and make sure that Enable Passive Listen was selected
>    from the Run / Network Mode menu area (or set preference
>    debug.passive-listen=true in your preferences file, which is
>    accessible from the Edit menu; then restart Wing IDE).  Either
>    way the status area at the top of windows should read
>    "Debugger: Ready and Listening".
>
> 6) Launch Zope and execute the code that does the 'import wingdbstub'.
>    This should cause Wing to change to "Debugger: Program Running"
>    or may reach an exception or breakpoint if you've set one.
>
> 7) It's possible you will also need to make a modification to
>    ZServer/PubCore/ZRendezvous.py so that the handle() method
>    reads as follows:
>
>     def handle(self, name, request, response):
>         import ZPublisher
>         try:
>             ZPublisher.publish_module(name, request = request, response =
> response)         finally:
>             response._finish()
>
>    This was needed in the past but our recent threading-related
>    improvements may mean this is no longer required.
>
> The above assumes you're running Zope and Wing IDE as the same
> user on the same machine.  If you want to do remote debugging,
> this is described in the Debugger chapter of the manual:
>
> http://wingide.com/psupport/wingide-1.1/
>
> (see section 6.15.3)
>
> Please let us know if you run into any problems.
>
> Thanks,
>
> - Stephan
>
> _________________________________________________
> Wing IDE discussion list
> http://wingide.com/support/forum







Run by Mailman v 2.0.8


Copyright (c) 2000-2002, Archaeopteryx Software, Inc.
Legal Statements