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.
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.
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.
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>
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With