Get IPython tab completion for ipdb

Related searches

I have IPython(0.13.1) and ipdb(0.7) installed, I inserted the line import ipdb;ipdb.set_trace() in my script and ran python my_script.py. Now I am in the ipdb prompt and there is some autocompletion (e.g. a bare tab) but it's not the same as the autocompletion I get when I enter IPython. In the ipdb prompt requests. then <tab> (after import) does not give me a list of attributes as in IPython. How do I get that same tab completion as in IPython with ipdb?

Btw, when I run python -m ipdb my_script.py the tab completion works just as in IPython but the downside of this is that it starts the debugger from the first line instead of the line I've put import ipdb;ipdb.set_trace().

I had the same phenomenon on my Mac using ipython==0.13.2 and ipdb==0.7 inside a Python 2.7.5 virtualenv. When I tried to debug, I had the tab completion for the builtins, but not for the variables in the current scope. I discovered, that I had a custom .pdbrc located in my home folder (http://docs.python.org/2/library/pdb.html#id2). After I commented all the stuff out, the tab completion worked again.

I don't know when and why I added this file, but this is what was in there:

# See http://docs.python.org/2/library/pdb.html#id2 for the structure of this file.
import pdb

# 'inspect x' will print the source code for a method, class or function.
alias inspect import inspect;print inspect.getsource(%1)
alias i import inspect;print inspect.getsource(%1)
# 'help x' opens the man-style help viewer from the interpretter on an object
alias help !print help(%1)
alias h !print help(%1)
# For ordinary Python objects, ppo will pretty-print members and their values.
alias ppo pp %1.__dict__
# ppio runs ppo over a sequence of objects
alias ppio pp [a.__dict__ for a in %1]

# This tries to enable tab-completion of some identifiers.
!import rlcompleter
!pdb.Pdb.complete = rlcompleter.Completer(locals()).complete

# Taken from https://gist.github.com/1125049
# There are a couple of edge cases where you can lose terminal
# echo. This should restore it next time you open a pdb.
!import termios, sys
!termios_fd = sys.stdin.fileno()
!termios_echo = termios.tcgetattr(termios_fd)
!termios_echo[3] = termios_echo[3] | termios.ECHO
!termios_result = termios.tcsetattr(termios_fd, termios.TCSADRAIN, termios_echo)

Further research is needed to check what breaks the tab-completion in there...

Using ipdb with --pdbcls and tab completion � Issue #4008 � pytest , If I set it using --pdbcls=IPython.core.debugger:Pdb then I can use pytest --pdb to get into a shell on exceptions or when I use pytest.set_trace� ipdb exports functions to access the IPython debugger, which features tab completion, syntax highlighting, better tracebacks, better introspection with the same interface as the pdb module. Example usage: import ipdb ipdb.set_trace() ipdb.set_trace(context=5) # will show five lines of code # instead of the default three lines # or you can set it via IPDB_CONTEXT_SIZE env variable # or setup.cfg file ipdb.pm() ipdb.run('x [0] = 3') result = ipdb.runcall(function, arg0, arg1, kwarg='foo

I had the same problem and I fixed it with:

sudo pip install --upgrade ipdb ipython readline

If you don't have readline installed make sure to install libncurses5-dev as @musashi14 suggested.

Support up/down arrow and tab completion when using `ipdb` to , I find %debug to enter post mortem debugging with ipdb really useful for Support up/down arrow and tab completion when using `ipdb` to debug notebook #7006 from IPython.core.debugger import Pdb; Pdb().set_trace(). It's not something that can be solved purely within pdb. The IPython kernel would need a way to delegate finding tab completions at a raw_input prompt to the package that produced the prompt. AFAIK, the kernel also blocks while waiting for input, so we'd need some way to work around that. That will probably take quite some thought.

Does easy_install readline help?

ipdb � PyPI, IPython-enabled pdb. ipdb exports functions to access the IPython debugger, which features tab completion, syntax highlighting, better If you install ipdb with a tool which supports setuptools entry points, an ipdb script is� Once in ipdb shell execute the follow code snippet to get IPython Interactive Shell. ipdb > from IPython import embed ipdb > embed () # drop into an IPython session. # Any variables you define or modify here # will not affect program execution

I had the same problem on ubuntu 14.04 and got it fixed with:

apt-get install libncurses5-dev

pip install --upgrade readline

Better Python Debugging With IPDB, ipdb, the IPython-enabled Python Debugger, is a third party interative debugger and adds IPython support for the interactive shell, like tab completion, color Once in ipdb shell execute the follow code snippet to get IPython� ipdb is an interactive Python Debugger with IPython integration, which features tab completion and syntax highlighting, etc. In layman's terms, ipdb is a better pdb.

As of 2019-11 few things changes so here is what should fix it:

pip install --upgrade ipdb gnureadline ptpython

# Handly to enable ipdb on pytest exceptions
export PYTEST_ADDOPTS='--pdb --pdbcls=IPython.terminal.debugger:Pdb'

Interactive environments and debugging — Essential Python Tools , You can install Ipython via pip( pip install ipython ) but we suggest installing IPython than python like Syntax highlighting, Proper Intendation, tab- completion, ipdb, the Ipython-enabled python debugger, with all pdb's features and adds� ipython --version : 5.0.0 source of ipython: conda-forge build. When I am in the ipython terminal and using the debugger, tab completion does not work (i.e., I just get a tab). This happened in the version of IPython I had before installing this a few minutes ago, so I wonder if it's something wrong with the conda-forge build?

See #9487 - IPython.core.debugger is now plainer, and the completion functionality is moved to IPython.terminal.debugger. The 'core' variant still works in the notebook, and the PTK-using subclass in 'terminal' relies on having a terminal interface.

The most useful is tab-completion. Any identifiers that are defined in locals() or in globals() can be tab-completed. The “magic” commands (%, ??) from the regular iPython shell are not available in ipdb. Instead, ipdb provides some extra debugger commands, prefixed with a “p”. pinfo obj is the same as obj? in the iPython shell.

Run any command in the IPython/ipdb console, e.g. a = 2 Observe that you can't use the Up / Down arrow keys for the command history, and that autocompletion is disabled (e.g. write the name of some class/instance, a dot, and press Tab or Ctrl + Space , and nothing happens)

Comments
  • This also happens for me on OS X with ipython and ipdb installed via pip and readline installed via easy_install (all inside a virtualenv). What's the environment you're using, so that we can possibly narrow this down?
  • I'm using Ubuntu 12.04, ipython and ipdb also installed via pip. The problem occurs inside as well as outside a virtual environment. I get tab completion though but only on built-in function/keywords (e.g. when I create a dic = {} in my code then go into debugging via ipdb;ipdb.set_trace() and type di, press tab I only see dict(, dir( and divmod(. I can't see dic.)
  • That's exactly what I see--completion for builtins but not locals or modules.
  • it works fine when I use %debug inside IPython, but it doesn't work when I run my test suite and break with ipdb
  • python -m ipdb my_script.py basically gets the job done for me ... just his c at the first debug break, and then all is well. I understand this is just a work around, but its a pretty minor irritant to what is my favorite Python package.
  • You made my day. It was the fricking .pdbrc in my home folder!
  • As far as I know ipython uses prompt_toolkit? How is installing readline going to resolve the problem?
  • This one actually helped in OSX