Skip to main content

Post-mortem debugging on Zope exceptions

Project description

Enable various PDB debugging when debug-mode=on

When Zope is running in debug mode this product hooks PDB debugging into various parts of a Zope instance. Some additional Plone specific hooks are also included.

Requirements

This version of PDBDebugMode has been tested with Zope4 and Plone 5.2 in Python 2.7, 3.6 and 3.7

For Zope 2 (until Plone 5.1) please use Products.PDBDebugMode = 1.3.

If ipdb (http://pypi.python.org/pypi/ipdb) is available, it will use that instead of standard pdb.

Its recommended that you use an editor or IDE that can cooperate with pdb. Emacs for example, will display the corresponding lines of the source file alongside the pdb prompt.

Remember that this product does nothing unless zope is being run with debug-mode=on such as with “./bin/instance fg”

Post-Mortem Debugging

To provide for better investigation of errors, any error or exception logged with the python logging module will invoke pdb.post_mortem() if a traceback can be retrieved and set_trace will be invoked otherwise. Since the Zope error_log exception handler uses the logging module when logging errors, this provides for post mortem debugging of Zope errors. It is often useful, for example, to remove NotFound or Unauthorized from the ignored exception in error_log and then investigate such errors with PDB.

Runcall Requests

Any request that has the key ‘pdb_runcall’ will call the result of the request traversal in the debugger thus allowing for stepping through the resulting execution. To debug a POST or any other request which might be tricky to insert the ‘pdb_runcall’ key into, use ‘?toggle_runcall=1’ at the end of a URL immediately preceding the POST to set a ‘pdb_runcall’ cookie which will then invoke the pdb.runcall when the POST is submitted. Use ‘?toggle_runcall=1’ at the end of a URL to clear the cookie. Remember that the cookie will be set at the level in the hierarchy that it was set.

Debug View

Additionaly, a view named ‘pdb’ is registered for all objects that will simply raise an exception leaving you with the current context to inspect. Use it for example by calling http://localhost:8080/Plone/foo/@@pdb.

Allow Import of pdb

Import of the pdb module is also allowed in unprotected code such as python scripts.

Changelog

2.1 (2025-06-19)

Bug fixes:

  • Include dependencies in zcml to fix use in a pip-based install. [pbauer]

2.0 (2019-04-01)

New features:

  • Add log-meesage on startup. [pbauer]

Bug fixes:

1.4 (2019-03-02)

Breaking changes:

  • Make compatible with Zope4 and drop support for Zope 2. [pbauer]

New features:

  • Add compatibility for Python 3 and 2. [frapell]

  • Improve debug mode detection, provide a ZCML feature, and enable when running tests with ‘-D’. [rpatterson]

  • Add zope.testrunner support. [rpatterson]

  • Add some missing iPython support for runcall and broken_delete. [rpatterson]

Bug fixes:

  • Apparently the ipdb support only works with ipdb 0.3 or greater. Added an “ipdb” extra for this requirement. [rossp]

  • Fix ipdb import in zcatalog.py. [pabo]

1.3 - 2011-01-14

  • Ignore invalid GenericSetup handlers. [rossp]

  • Use ipdb when available. [neaj]

1.2 - 2011-01-07

  • Add some zopectl scripts I use when evaluating upgrades. [rossp]

  • Better handling of exceptions while checking error matching. [rossp]

  • Fix a problem with doing post_mortem debugging of error_log ignored exceptions. [rossp]

  • Fix handling of socket errors

  • Fix handling of SiteErrorLog tracebacks

  • Fix handling of exc_info logging arg

1.1 - 2009-04-18

  • Fix a bug due to a change in monkeypatcher

1.0 - 2009-04-10

  • Add collective.monkeypatcher as a requirement [kdeldycke] 2009-04-09

  • Fix some recursion errors

0.3 - 2009-04-08

  • Use collective.monkeypatcher to move all patches into ZCML

  • Fully deprecate the Zope exception handler in favor of the logging hook since the Zope exception handler uses the logging module anyways and more can be done by hooking at that level.

  • Handle failed matches in Products.PDBDebugMode.pdblogging more gracefully

  • More flexible log matching. Change Products.PDBDebugMode.pdblogging.ignore_regexes to ignore_matchers and accept any callable.

0.2 - 2008-05-15

  • Eggified

0.1 - 2006-03-11

  • Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

products_pdbdebugmode-2.1.tar.gz (18.7 kB view details)

Uploaded Source

Built Distribution

products_pdbdebugmode-2.1-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file products_pdbdebugmode-2.1.tar.gz.

File metadata

  • Download URL: products_pdbdebugmode-2.1.tar.gz
  • Upload date:
  • Size: 18.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for products_pdbdebugmode-2.1.tar.gz
Algorithm Hash digest
SHA256 b833f190f3bed66664c5f765f9c551e8b3d942687b6a92f03873133096227b3b
MD5 17346fe9ebe7addcc380ec894a8bd042
BLAKE2b-256 aff737090d4565c4e6b85b6b013cc8773ccd198a361e65bd6f62c780b8b334e5

See more details on using hashes here.

File details

Details for the file products_pdbdebugmode-2.1-py3-none-any.whl.

File metadata

File hashes

Hashes for products_pdbdebugmode-2.1-py3-none-any.whl
Algorithm Hash digest
SHA256 c5cfa032817b6b3f04ea19d7aabedb9b5b07f09f17c705feab32c4a0fa09de2c
MD5 851192639ef74e48ae2ab83cfe922da6
BLAKE2b-256 0ef26ebfdf342363c1daaa19425873d441c3a7e1ab7b45c09a67de3910c10e68

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page