[Grok-dev] Re: Suggestions or advice for how to debug a grok app using PyDev?

Craeg Strong cstrong at arielpartners.com
Sun Jun 8 20:25:26 EDT 2008


We finally got a chance to try this out, and I am now happily debugging 
my Grok/Zope3 application woo-hoo!

Martin Aspeli wrote:
> Craeg Strong wrote:
>> After unsuccessfully trying both Eric4 and SPE, I finally settled on 
>> Eclipse + PyDev as a debugging environment/IDE for Grok.
> I am using PyDev with Eclipse on Windows, and ended up using 
> collective.recipe.omelette to wire up a faux pythonpath with all 
> dependencies. I then set this as a source folder in pydev. I also set 
> the Zope 2 lib/python directory as one (you probably don't need 
> anything like this), and my custom source folders. This gives me full 
> code completion and proper inspection.
>
> I'd use the debug server. You need to add the pydevd sources to your 
> PYTHONPATH (I start Zope from within Eclipse, and have it as a source 
> folder) and then you do:
>
>  import pydevd; pydevd.set_trace()
>
> You'll need to start the debug server in Eclipse (go to the debug 
> perspective, there's a toolbar button) and then restart Zope. Once 
> that line is hit, you should get to the debugger.
I didn't yet use omlette, so the debugger says "source not available" 
for certain Grok and Zope3 egg python modules, but for now I am happy 
just to be able to debug my own code.

My steps were:
1) edit sys.path in MyApp/parts/app/runzope to include pydevd
....
  '/Users/cstrong/ade/buildout-eggs/zope.server-3.5.0a2-py2.4.egg',
  '/Users/cstrong/ade/buildout-eggs/RestrictedPython-3.4.2-py2.4.egg',
  '/Users/cstrong/ade/buildout-eggs/zope.app.file-3.4.0a1-py2.4.egg',
  '/Applications/eclipse/plugins/org.python.pydev.debug_1.3.17/pysrc', # 
CKS 8 June 2008 make it possible to debug
]
import zope.app.twisted.main
...etc

2) add 
"/Applications/eclipse/plugins/org.python.pydev.debug_1.3.17/pysrc" as 
an External Source Folder in my eclipse PyDev project properties

3) start the debugger where I want to start debugging

    def xml(self):
        "return all features in XML format"
        # connect with the external debugger CKS June 8 2008
        import pydevd; pydevd.settrace()
        doc = amara.create_document()
        doc.xml_append(self.toXml(doc))
        return doc.xml()

--Craeg
>
> Martin
>


More information about the Grok-dev mailing list