Open fcollonval opened 2 years ago
Hi! I have Jupiter Notebook version 6.4.11. In my case I can't run breakpoint on my notebook.
Can confirm it's still broken.
$ poetry run jupyter --version
Selected Jupyter core packages...
IPython : 8.2.0
ipykernel : 6.13.0
ipywidgets : 7.7.0
jupyter_client : 7.2.2
jupyter_core : 4.10.0
jupyter_server : 1.16.0
jupyterlab : 3.3.4
nbclient : 0.5.13
nbconvert : 6.5.0
nbformat : 5.3.0
notebook : 6.4.11
qtconsole : 5.3.0
traitlets : 5.1.1
$ cat /etc/fedora-release
Fedora release 35 (Thirty Five)
$ uname -a
Linux cdcx4 5.17.11-200.fc35.x86_64 #1 SMP PREEMPT Wed May 25 14:56:43 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Any updates on this? The only way I found that works is
import sys
def override_sys_breakpoint(frame=None):
from IPython.core.debugger import set_trace
set_trace(frame=frame)
sys.breakpointhook = override_sys_breakpoint
(ipython 7.34.0; jupyterlab 3.2.0)
It worked fine before, so I hope this is just a bug/regression, not a deliberate decision?
This is caused by debugpy. If you run
import pdb; pdb.runeval('breakpoint()')
you will see that it steps into debugpy code. If you step a few more times you'll see that it eventually hits the line
327 if not is_client_connected():
328 log.info("breakpoint() ignored - debugger not attached")
--> 329 return
and so breakpoint()
will exit without doing anything.
You can work-around this issue by running
python3 -m pip uninstall debugpy
in the terminal.
@JohanMabille you added the ipykernel debugpy integration; do you know what needs to be done to get breakpoint()
to work out-of-the-box?
This was very puzzling indeed, although difficult to say if it's a feature or a bug...
If breakpoint()
is supposed to be active only when the debugger is enabled, maybe emitting a warning would be better than silently passing.
Sorry for the late reply, I missed your ping @kerrickstaley ! I think you can execute the following code in a notebook cell to start debugpy:
import debugpy
debugpy.listen(("localhost", 5678)) # or debugpy.listen(5678)
Not 100% sure (this is a bit far to be honest), but this should be enough to setup breakpoints
I think there's a bug here that should be fixed. When you install debugpy
[1], it silently breaks the behavior of the breakpoint()
function when run in a Jupyter notebook. I think that breakpoint()
should always launch pdb
unless the user configures it to do something else.
[1] Which in my case I didn't do deliberately; I think it was a dependency of something else I installed.
[...]
breakpoint()
is supposed to be active only when the debugger is enabled [...]
Not sure where this statement comes from. breakpoint()
is not for use when the debugger is enabled;breakpoint()
is the "universal API for entering the debugger" (emphasis mine). Breaking it -- that is, preventing a call to breakpoint()
from "entering the debugger" -- is definitely a bug, nor is the expected behavior of breakpoint()
to do nothing.
Any update on this issue? It's been 4 years.
It's been 4.5 years now. :)
Using a fresh install of Jupyter Lab my usual
breakpoint()
to invoke the debugger in a Notebook is skipped (see screenshot). Usingimport pdb; pdb.set_trace()
instead invokespdb
as expected.I was expecting (am I wrong?) that a call to
breakpoint()
in a cell would invokepdb
.This is using a fresh conda install of Jupyter Lab this morning, no reconfiguration of the environment has occurred.
Description
Reproduce
I've created a fresh minimal environment:
and then I run
jupyter lab
and try to callbreakpoint()
as noted in the screenshot above.I used
jupyter lab --debug
and scanned the output, nothing looked amiss (but there's a lot and I'm not sure what to look for) - I can attach a copy if needed?I noticed this originally in a second more complex environment (also built today, making me think this is a library update issue somewhere) and I made the above simple environment to try to narrow things down, but the issue remains.
Environment
Linux Cinnamon using Anaconda with Firefox, the OS is all up to date.