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

Stephan R.A. Deibel sdeibel at wingide.com
Thu, 26 Sep 2002 11:20:57 -0400 (EDT)


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






Run by Mailman v 2.0.8


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