Stepping into a function in IPython

Daniel picture Daniel · Sep 28, 2012 · Viewed 14.9k times · Source

Is there a way to step into the first line of a function in ipython. I imagine something that would look like:

%step foo(1, 2)

which runs ipdb and sets a breakpoint at the first line of foo.

If I want to do this now I have to go to the function's source code and add an import ipdb; ipdb.set_trace() line.

Answer

Ian Clelland picture Ian Clelland · Sep 28, 2012

ipdb has had support for runcall, runeval and run since 0.7, earlier this year. You can use it just like pdb.runcall:

In [1]: def foo(a, b):
   ...:     print a + b
   ...:

In [2]: import ipdb

In [3]: ipdb.runcall(foo, 1, 2)
> <ipython-input-1-2e565fd9c4a4>(2)foo()
      1 def foo(a, b):
----> 2     print a + b
      3

ipdb>