Introduction

eric3 is an integrated development environment for the Python programming language. It can be used to debug code that is run by the mod_python module for the Apache web server. This document assumes mod_python is installed and Apache is configured to use it; please see the installation chapter of the mod_python manual for information on how to install it.

Since eric3's debugger support is single threaded, only one http request can be debugged at a time. A new debugging session is created for each request and the session is ended when the request processing ends. This is true of requests processed by a single Python module and it is true of requests processed by multiple Python modules in the same Apache process and its child processes. It is recommended that only one person debug mod_python based modules per Apache instance.

Before you are able to use eric3 to debug mod_python modules you have to patch the mod_python installation. In order to do this, simply run the script patch_modpython.py contained in the eric3 distribution. This changes the file apache.py of mod_python to use the eric3 debugger instead of Pdb.

Quick Start

- Enable passive listening in eric3 by choosing Settings -> Preferences -> Debugger -> Passive Debugger Enabled. Usually the port setting can be left unchanged. The eric3 IDE needs to be restarted for this preference to take effect.

- Ensure you have a .htaccess file in the directory containing the module to be debugged. The .htaccess file should have a line containing „PythonEnablePdb On“. This will make the module connect to the eric3 IDE the next time the relevant URL is loaded in a browser.

- Add the line „apache.initDebugger('/Path/To/Your/script.py') right after the line importing apache.py.

- Load the URL to the Python script to trigger the module's execution.

- If everything works ok, eric3 will show the file given in the startDebugger call above in an editor and highlight the statement after this call.

- Now use the debugging commands to step through your script.

Example

.htaccess

    AddHandler python-program .py
    PythonHandler modpython_dbg
    PythonDebug On
    PythonEnablePdb On

modpython_dbg.py

    from mod_python import apache

    apache.initDebugger('/Path/To/modpython_dbg.py')

    def handler(req):
        req.content_type = "text/plain"
        req.send_http_header()
        req.write("Hello World!\n")

        return apache.OK