From 1acb746d79c2affbac6fb98e5abad1682bdf7f6f Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sat, 4 Dec 2010 11:20:26 +0000 Subject: [PATCH] Add the "interact" pdb command from pdb++. --- Doc/library/pdb.rst | 8 ++++++++ Lib/pdb.py | 19 +++++++++++++++---- Misc/NEWS | 2 ++ 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/Doc/library/pdb.rst b/Doc/library/pdb.rst index 3ef3696e6c9..db21d1f7c7c 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 ad71c81b203..d6a9a925da0 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 cbdeb6dfa4f..3f36425c24f 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().