diff options
author | Barry Warsaw <barry@python.org> | 2002-11-05 22:40:20 (GMT) |
---|---|---|
committer | Barry Warsaw <barry@python.org> | 2002-11-05 22:40:20 (GMT) |
commit | 210bd208eba7e3989a7d054c6f793b084a3c8a2d (patch) | |
tree | 43f764c335717f9583d308bf38b5aff36d03ec57 | |
parent | c2f7757ef5ec0e07fcf3325ac61269cbed121de8 (diff) | |
download | cpython-210bd208eba7e3989a7d054c6f793b084a3c8a2d.zip cpython-210bd208eba7e3989a7d054c6f793b084a3c8a2d.tar.gz cpython-210bd208eba7e3989a7d054c6f793b084a3c8a2d.tar.bz2 |
Implement a `pp' command, which is like `p' except that it
pretty-prints the value of its expression argument.
-rwxr-xr-x | Lib/pdb.py | 27 |
1 files changed, 21 insertions, 6 deletions
@@ -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 |