being debugged (e.g. when an assertion fails).
-.. function:: post_mortem(traceback)
+.. function:: post_mortem([traceback])
- Enter post-mortem debugging of the given *traceback* object.
+ Enter post-mortem debugging of the given *traceback* object. If no
+ *traceback* is given, it uses the one of the exception that is currently
+ being handled (an exception must be being handled if the default is to be
+ used).
.. function:: pm()
# Post-Mortem interface
-def post_mortem(t):
+def post_mortem(t=None):
+ # handling the default
+ if t is None:
+ # sys.exc_info() returns (type, value, traceback) if an exception is
+ # being handled, otherwise it returns None
+ t = sys.exc_info()[2]
+ if t is None:
+ raise ValueError("A valid traceback must be passed if no "
+ "exception is being handled")
+
p = Pdb()
p.reset()
while t.tb_next is not None:
Library
-------
+- Issue #1106316: pdb.post_mortem()'s parameter, "traceback", is now
+ optional: it defaults to the traceback of the exception that is currently
+ being handled (is mandatory to be in the middle of an exception, otherwise
+ it raises ValueError).
+
- Issue #1193577: A .shutdown() method has been added to SocketServers
which terminates the .serve_forever() loop.