From 210bd208eba7e3989a7d054c6f793b084a3c8a2d Mon Sep 17 00:00:00 2001 From: Barry Warsaw Date: Tue, 5 Nov 2002 22:40:20 +0000 Subject: Implement a `pp' command, which is like `p' except that it pretty-prints the value of its expression argument. --- Lib/pdb.py | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/Lib/pdb.py b/Lib/pdb.py index 4b0516d..94518ae 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -11,6 +11,7 @@ import bdb from repr import Repr import os import re +import pprint # Create a custom safe Repr instance and increase its maxstring. # The default of 30 truncates error messages too easily. @@ -532,19 +533,29 @@ class Pdb(bdb.Bdb, cmd.Cmd): print '*** Not yet returned!' do_rv = do_retval - def do_p(self, arg): + def _getval(self, arg): try: - value = eval(arg, self.curframe.f_globals, - self.curframe.f_locals) + return eval(arg, self.curframe.f_globals, + self.curframe.f_locals) except: t, v = sys.exc_info()[:2] - if type(t) == type(''): + if isinstance(t, str): exc_type_name = t else: exc_type_name = t.__name__ print '***', exc_type_name + ':', `v` - return + raise + + def do_p(self, arg): + try: + print repr(self._getval(arg)) + except: + pass - print `value` + def do_pp(self, arg): + try: + pprint.pprint(self._getval(arg)) + except: + pass def do_list(self, arg): self.lastcmd = 'list' @@ -817,6 +828,10 @@ Print the arguments of the current function.""" print """p expression Print the value of the expression.""" + def help_pp(self): + print """pp expression +Pretty-print the value of the expression.""" + def help_exec(self): print """(!) statement Execute the (one-line) statement in the context of -- cgit v0.12