From c54aec1fda52a0f21bdd8c529c9bb9c92b24f96a Mon Sep 17 00:00:00 2001 From: Facundo Batista Date: Sat, 8 Mar 2008 16:50:27 +0000 Subject: [PATCH] Issue 1106316. post_mortem()'s parameter, traceback, is now optional: it defaults to the traceback of the exception that is currently being handled. --- Doc/library/pdb.rst | 7 +++++-- Lib/pdb.py | 11 ++++++++++- Misc/NEWS | 5 +++++ 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Doc/library/pdb.rst b/Doc/library/pdb.rst index 2b28ae0ef52..0d2a936e0a1 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 8da23d86fe4..82b52a3852e 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 26b8b79182a..bd3a6cca0dc 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.