Stepping into a function in IPython

Question:

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.

Asked By: Daniel

||

Answers:

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>
Answered By: Ian Clelland

The IPython magic you was asking for is now implemented with the newer versions:
https://stackoverflow.com/a/46333421/4374441

You just have to type %debug foo(1, 2) then s to step into the function.

Answered By: Jean Paul
Categories: questions Tags: , , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.