Implement a `pp' command, which is like `p' except that it
pretty-prints the value of its expression argument.
This commit is contained in:
parent
c2f7757ef5
commit
210bd208eb
27
Lib/pdb.py
27
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
|
||||
|
||||
print `value`
|
||||
def do_p(self, arg):
|
||||
try:
|
||||
print repr(self._getval(arg))
|
||||
except:
|
||||
pass
|
||||
|
||||
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
|
||||
|
|
Loading…
Reference in New Issue