summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2010-12-04 11:20:26 (GMT)
committerGeorg Brandl <georg@python.org>2010-12-04 11:20:26 (GMT)
commit1acb746d79c2affbac6fb98e5abad1682bdf7f6f (patch)
tree1e8ebee864158a90388535f951538c6f81b2a3d5
parent732324a3f86a352217b01ae2438b6db7691ae0b1 (diff)
downloadcpython-1acb746d79c2affbac6fb98e5abad1682bdf7f6f.zip
cpython-1acb746d79c2affbac6fb98e5abad1682bdf7f6f.tar.gz
cpython-1acb746d79c2affbac6fb98e5abad1682bdf7f6f.tar.bz2
Add the "interact" pdb command from pdb++.
-rw-r--r--Doc/library/pdb.rst8
-rwxr-xr-xLib/pdb.py19
-rw-r--r--Misc/NEWS2
3 files changed, 25 insertions, 4 deletions
diff --git a/Doc/library/pdb.rst b/Doc/library/pdb.rst
index 3ef3696..db21d1f 100644
--- a/Doc/library/pdb.rst
+++ b/Doc/library/pdb.rst
@@ -407,6 +407,14 @@ by the local file.
.. versionadded:: 3.2
+.. pdbcommand:: interact
+
+ Start an interative interpreter (using the :mod:`code` module) whose global
+ namespace contains all the (global and local) names found in the current
+ scope.
+
+ .. versionadded:: 3.2
+
.. _debugger-aliases:
.. pdbcommand:: alias [name [command]]
diff --git a/Lib/pdb.py b/Lib/pdb.py
index ad71c81..d6a9a92 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -67,15 +67,16 @@ Debugger commands
# commands and is appended to __doc__ after the class has been defined.
import sys
-import linecache
import cmd
import bdb
import dis
import os
import re
+import code
import pprint
-import traceback
import inspect
+import traceback
+import linecache
class Restart(Exception):
@@ -1167,6 +1168,16 @@ class Pdb(bdb.Bdb, cmd.Cmd):
# None of the above...
self.message(type(value))
+ def do_interact(self, arg):
+ """interact
+
+ Start an interative interpreter whose global namespace
+ contains all the (global and local) names found in the current scope.
+ """
+ ns = self.curframe.f_globals.copy()
+ ns.update(self.curframe_locals)
+ code.interact("*interactive*", local=ns)
+
def do_alias(self, arg):
"""alias [name [command [parameter parameter ...] ]]
Create an alias called 'name' that executes 'command'. The
@@ -1342,8 +1353,8 @@ if __doc__ is not None:
'help', 'where', 'down', 'up', 'break', 'tbreak', 'clear', 'disable',
'enable', 'ignore', 'condition', 'commands', 'step', 'next', 'until',
'jump', 'return', 'retval', 'run', 'continue', 'list', 'longlist',
- 'args', 'print', 'pp', 'whatis', 'source', 'alias', 'unalias',
- 'debug', 'quit',
+ 'args', 'print', 'pp', 'whatis', 'source', 'interact', 'alias',
+ 'unalias', 'debug', 'quit',
]
for _command in _help_order:
diff --git a/Misc/NEWS b/Misc/NEWS
index cbdeb6d..3f36425 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -45,6 +45,8 @@ Core and Builtins
Library
-------
+- Add the "interact" pdb command.
+
- Issue #7905: Actually respect the keyencoding parameter to shelve.Shelf.
- Issue #1569291: Speed up array.repeat().