From: Facundo Batista Date: Sat, 8 Mar 2008 16:50:27 +0000 (+0000) Subject: Issue 1106316. post_mortem()'s parameter, traceback, is now X-Git-Tag: v2.6a2~353 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=c54aec1fda52a0f21bdd8c529c9bb9c92b24f96a;p=python Issue 1106316. post_mortem()'s parameter, traceback, is now optional: it defaults to the traceback of the exception that is currently being handled. --- diff --git a/Doc/library/pdb.rst b/Doc/library/pdb.rst index 2b28ae0ef5..0d2a936e0a 100644 --- a/Doc/library/pdb.rst +++ b/Doc/library/pdb.rst @@ -107,9 +107,12 @@ slightly different way: 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() diff --git a/Lib/pdb.py b/Lib/pdb.py index 8da23d86fe..82b52a3852 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -1198,7 +1198,16 @@ def set_trace(): # 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: diff --git a/Misc/NEWS b/Misc/NEWS index 26b8b79182..bd3a6cca0d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -21,6 +21,11 @@ Core and builtins 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.