Commit 1acb746d authored by Georg Brandl's avatar Georg Brandl

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

parent 732324a3
...@@ -407,6 +407,14 @@ by the local 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]]
......
...@@ -67,15 +67,16 @@ Debugger commands ...@@ -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): ...@@ -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: ...@@ -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:
......
...@@ -45,6 +45,8 @@ Core and Builtins ...@@ -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().
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment