
Running Zope in Debug Mode

  If you wish to run Zope in debug mode, set the 'debug-mode'
  configuration file parameter to 'on' (this is the default).  This
  will have the following effects::

   o On UNIX, Zope will not detach from the controlling terminal.

   o The Z_DEBUG_MODE environment variable gets set, which causes
     behavioral changes to Zope appropriate for software development.
     See the configuration file description of 'debug-mode' for more
     information.

Using 'zopectl debug'

  In Zopes 2.7 and better, a utility known as 'zopectl' is installed
  into generated instance homes.  You can use it to inspect a Zope
  instance's running state via an interactive Python interpreter by
  passing zopectl the 'debug' parameter on the command line.  The
  'top-level' Zope object (the root folder) will be bound to the name
  'app' within the interpreter.  You can then use normal Python method
  calls against app and use the Python interpreter normally to inspect
  results::

    [chrism@james Trunk]$ bin/zopectl debug
    Starting debugger (the name "app" is bound to the top-level Zope object)
    >>> app.objectIds()
    ['acl_users', 'Control_Panel', 'temp_folder', 'browser_id_manager', 'session    _data_manager', 'error_log', 'index_html', 'standard_error_message', 'standa    rd_html_footer', 'standard_html_header', 'standard_template.pt']
    >>> 

Using the Medusa Monitor

  NOTE: as of Zope 2.7, the Medusa monitor client is known to have
  operational problems due to lack of maintenance.  It may work, it
  may not.  If it doesn't work as advertised, please try 'zopectl
  debug' instead.

  If you're running Zope with a medusa monitor port, you can connect
  and interact via a python prompt with a running Zope session, while
  others interact with it over the web.

  Some constraints:

   o You must connect to a server running on the local host.

   o You must authenticate as superuser.

   o At the time of writing the superuser password (in the access
     file) must be plain text, not encrypted.

  To use the monitor, start it from the shell prompt like so (as if
  from the Zope root):

  python lib/python/ZServer/medusa/monitor_client.py localhost 8099

  You'll get back a python prompt.  To connect with the running Zope
  session:

  >>> import Zope
  >>> app = Zope.app()
  >>> dir(app.Control_Panel.Products)
  ['ExternalMethod', 'MIMETools', 'MailHost', 'OFSP', 'ZCatalog',
  'ZGadflyDA', 'ZSQLMethods', '_objects']
  >>> 

  To see ODB changes caused by access concurrent with your debug
  session (eg, those web connections that can still be happening, or
  other debug sessions!), you may have to do a bit of magic:

  >>> app._p_jar.sync()

  To commit changes you make, before exiting, you may have to do
  another bit of magic:

  >>> get_transaction().commit()
