Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Stepping into a function in IPython

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.

like image 876
Daniel Avatar asked Sep 28 '12 20:09

Daniel


People also ask

How do I debug with IPython?

IPython has another way to start a debugger. You don't need to modify the source code of any file as we did before. If you run the %run -d filename.py magic command, IPython will execute the filename.py file and put a breakpoint on the first line there. It's just as if you would put the import ipdb; ipdb.

How do you run a step by step in Jupyter notebook?

You can run the notebook document step-by-step (one cell a time) by pressing shift + enter. You can run the whole notebook in a single step by clicking on the menu Cell -> Run All. To restart the kernel (i.e. the computational engine), click on the menu Kernel -> Restart.


2 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> 
like image 81
Ian Clelland Avatar answered Sep 18 '22 01:09

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.

like image 36
Jean Paul Avatar answered Sep 18 '22 01:09

Jean Paul