Add the "interact" pdb command from pdb++.

This commit is contained in:
Georg Brandl 2010-12-04 11:20:26 +00:00
parent 732324a3f8
commit 1acb746d79
3 changed files with 25 additions and 4 deletions

View File

@ -407,6 +407,14 @@ by the local file.
.. versionadded:: 3.2 .. 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: .. _debugger-aliases:
.. pdbcommand:: alias [name [command]] .. pdbcommand:: alias [name [command]]

View File

@ -67,15 +67,16 @@ Debugger commands
# commands and is appended to __doc__ after the class has been defined. # commands and is appended to __doc__ after the class has been defined.
import sys import sys
import linecache
import cmd import cmd
import bdb import bdb
import dis import dis
import os import os
import re import re
import code
import pprint import pprint
import traceback
import inspect import inspect
import traceback
import linecache
class Restart(Exception): class Restart(Exception):
@ -1167,6 +1168,16 @@ class Pdb(bdb.Bdb, cmd.Cmd):
# None of the above... # None of the above...
self.message(type(value)) 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): def do_alias(self, arg):
"""alias [name [command [parameter parameter ...] ]] """alias [name [command [parameter parameter ...] ]]
Create an alias called 'name' that executes 'command'. The 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', 'help', 'where', 'down', 'up', 'break', 'tbreak', 'clear', 'disable',
'enable', 'ignore', 'condition', 'commands', 'step', 'next', 'until', 'enable', 'ignore', 'condition', 'commands', 'step', 'next', 'until',
'jump', 'return', 'retval', 'run', 'continue', 'list', 'longlist', 'jump', 'return', 'retval', 'run', 'continue', 'list', 'longlist',
'args', 'print', 'pp', 'whatis', 'source', 'alias', 'unalias', 'args', 'print', 'pp', 'whatis', 'source', 'interact', 'alias',
'debug', 'quit', 'unalias', 'debug', 'quit',
] ]
for _command in _help_order: for _command in _help_order:

View File

@ -45,6 +45,8 @@ Core and Builtins
Library Library
------- -------
- Add the "interact" pdb command.
- Issue #7905: Actually respect the keyencoding parameter to shelve.Shelf. - Issue #7905: Actually respect the keyencoding parameter to shelve.Shelf.
- Issue #1569291: Speed up array.repeat(). - Issue #1569291: Speed up array.repeat().