Jupyter has a feature in being able to execute one cell at a time. If a cell has a lot of statements it's often possible (desirable) to split it into smaller single statement cells, except when a block is involved,e.g if, for, def, etc.
this question was asked earlier in a different way:
Execute algorithm step by step in Jupyter
and answered
What is the right way to debug in iPython notebook?
While invoking a debugger may be the best option available, it does seem kludgy, and it likely would not work with non Python kernels.
What would be ideal is to have nested cells, and have a way to execute the entire block or the subcell.
for a Python example splitting a cell containing:
if 0 == 1:
zero = 1
else:
zero = 0
into, say, two cells:
if 0 == 1:
zero = 1
and
else:
zero = 0
likewise for Julia or R.
a debugger solution would not be my preference.