summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>2002-11-05 22:40:20 (GMT)
committerBarry Warsaw <barry@python.org>2002-11-05 22:40:20 (GMT)
commit210bd208eba7e3989a7d054c6f793b084a3c8a2d (patch)
tree43f764c335717f9583d308bf38b5aff36d03ec57
parentc2f7757ef5ec0e07fcf3325ac61269cbed121de8 (diff)
downloadcpython-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-xLib/pdb.py27
1 files 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