Can someone who is familiar with debuggers provide some perspective on the JupyterLab Python debugger console? Is it fully implemented as of this date, or does it have limitations? What browser and OS have you used it with? How long has it been around? Basic introduction stuff.
I am have written a fair amount of JavaScript, and am familiar with popular browser console debuggers. I started programming in the 1970s and have seen a fair number of debuggers, so I have some expectations as to what a debugger will do. However, I donât know anyone who is programming Python with JupyterLab so I donât have a reference frame for this.
I assume you mean the visual debugger for Jupyter, a.k.a Debugger front-end?
Keep in mind:
âA key principle to the Jupyter design is the agnosticism to the programming language . It is important for the Jupyter debug protocol to be adaptable to other kernel implementations.â - SOURCE: blog post â A visual debugger for Jupyterâ
The title of your post doesnât seem in line with that concept?
Assuming you did mean the visual debugger/Debugger front-end, I can answer some of the straightforward questions you pose below. Maybe after investigating more you can refine what you seek to get perspective about that isnât already covered in the documentation, associated blog posts, YouTube videos, StackOverflow posts, or discussion in the development repo(s).
The documentation covers this here in the âDebuggerâ section:
âFor the debugger to be enabled and visible, a kernel with support for debugging is required.â
It goes on to list the kernels it works with and asks readers to help adding more they know about. It points to resources for adding support for it to more kernels there as well.
It became a core component of JupyterLab and not an extension in the summer of 2020, see here for more details.
The first public release is discussed in a blog post in March 2020.
The blog post about the ipykernel supporting it can be found in this May 2021 blog post entitled âEnabling the JupyterLab debugger with ipykernelâ.
Thereâs an exchange on StackOverflow here and here from around the time of that blog post that may provide you with more perspective.
Also from around that time is a group of links about adding support for using keyboard shortcuts to step through debugging, see here.
You can work back through the history found at the now-archived original jupyterlab/debugger GitHub repo if you need more details on it before that.
You can get a sense of a lot of the active development around it by searching for open issues pertaining to the term âdebuggerâ in the GitHub repo, which you can also do by simply clicking here.
1 Like
I am asking a deeper question than that of the visual interface. But yes, I was asking about that too. It seems quite possible to have a generic source code debugger as it is in a sense a generic problem, data visualization, break points, and stepping. So it seems there must be a standard for talking to the interface, thus leaving it to the kernel developers, rather than Jupyter Lab, to make it work with their language.
So the deeper part of the question must then be a question about the kernel. I should have mentioned the ipykernel, or the xeus kernel.
I am curious that when it is all working then, and one steps into a function defined in another file (Python module), then a tab should open (or perhaps is required to already be open) and stepping would continue there.
Thanks for the links. It is late here am hours as usual, so I will go through those tomorrow.
I opened another discussion for problems Iâve had in trying to use the debugger, but part of that problem is in simply not knowing what to expect. Should one expect to see a full functional debugger with the aforementioned kernels? Or is debugging even the thing I think it is for Jupyter Lab. Look forward to reading the links tomorrow. Thank you for the considered reply.
So it seems there must be a standard for talking to the interface, thus leaving it to the kernel developers, rather than Jupyter Lab, to make it work with their language.
This is a great question to ask because standards are a core part of Project Jupyter. The Jupyter debugger leverages the Debugger Adapter Protocol, extending it and wrapping in the kernel protocol as needed. The Jupyter protocol for kernels currently lives together with reference implmentation in Jupyter Client 8.6 â jupyter_client 8.6.0 documentation (yes, we know this may be confusing). Of specific interest might be
2 Likes