Dieter Maurer's PDB extension.
==============================

``Pdb``, the Python debugger, has severe limitations (apart from some bugs).
This extension tries to get rid of some of them.

Things done
-----------

 * setting breakpoints

   Allow *filename* to specify a module as well.

   Allow setting breakpoints from outside via ``do_break``.
   This is useful for debug setups.

 * exception display

   The current display of an exception is almost useless.
   In the ``Pdb`` code, exceptions are displayed at 4 places --
   and each of them uses slightly different code (whow!).

   We consolidate this into a single function ``_handle_exception``
   and present the exception with ``traceback.format_exception_only``.
   We also store the exception in the ``Pdb`` instance.
   A new command ``exception`` (abbreviated ``e``) presents this
   stored exception value in a way similar to the ``where`` command.


 * ``where`` command improvements

   - each frame identifies its level (the top frame is at level 0,
     the one below it at level 1, etc...)

   - the current frame is marked as such

   - ``where`` gets optional arguments *number* and *end*

     *number* controls how many frames are displayed (default: ``maxint``),
     *end* at what level the display ends, negative numbers count from
     the bottom (default: ``-1``, i.e. the bottom frame).

 * new command ``frame level`` (abbr: ``f``)

   switch to call frame at *level*

   without argument, provide info about current frame

 * allow to customize the display of the ``where`` command
   and of tracebacks
   e.g. to display additional debugging information as
   provided by Zope (for example).

   This can be done by customizing ``getAdditionalFrameInfo``.

Things not yet done
-------------------

 * Returning from ``debug`` occasionally returns to ``stop``
   rather than where we entered the recursive debugger.
   This is often nasty (and should be fixed)

Version history
---------------

1.0.3
,,,,,

 * fix the ``debug`` to use the current ``Pdb`` class, not Python's.

1.0.2
,,,,,

 * let external calls to ``do_break`` work even after the first ``run``.
