调试器#
JupyterLab 默认附带一个调试器前端。
这意味着可以直接从JupyterLab调试笔记本、代码控制台和文件!
需求#
要使调试器启用并可见,需要一个支持调试的内核。
以下是已知支持Jupyter调试协议的内核列表:
xeus-python: Python编程语言的Jupyter内核
xeus-robot: 用于Robot Framework的Jupyter内核
ipykernel: Jupyter 的 IPython 内核
common-lisp-jupyter: Jupyter 的 Common Lisp 内核
其他Jupyter内核也可以通过实现Jupyter调试器协议来支持调试并与JupyterLab调试器兼容。
如果您知道其他支持调试的内核,请打开一个PR将它们添加到此列表中。
以下是如何在新的conda环境中安装ipykernel和xeus-python的示例:
conda create -n jupyterlab-debugger -c conda-forge "jupyterlab>=3" "ipykernel>=6" xeus-python
conda activate jupyterlab-debugger
用法#
这里是一个屏幕录像,用于启用调试器并设置断点。下面将更详细地描述各个步骤。
使用支持调试器的内核#
首先,您需要检查内核是否支持调试。如果支持,笔记本右上角的bug图标将会被启用。
在笔记本中调试代码#
现在让我们为这个笔记本启用调试器。可以通过在笔记本右上角切换bug按钮来启用调试器:
一旦启用了调试,我们就可以设置断点并逐步进入代码。
让我们定义一个将两个元素相加的函数:
def add(a, b):
res = a + b
return res
我们可以调用函数并打印结果:
result = add(1, 2)
print(result)
现在让我们回到第一个代码单元格,并点击第2行的装订线以添加断点:
然后让我们点击_Run_按钮来执行第二个代码单元格:
执行在设置断点的地方停止:
探索代码状态#
探索代码状态是通过调试器侧边栏完成的。它显示了一个变量浏览器、断点列表、源代码预览以及导航调用堆栈的可能性。
变量
可以使用树视图和表格视图来探索变量:
调用栈
您可以进入代码,并使用调试操作继续执行:
断点
在执行停止时,可以添加和删除新的断点,它们将显示在断点列表中:
来源
源面板显示当前正在调试的文件的来源:
如果源对应于已删除的单元格,点击在主区域打开按钮将打开源的只读视图。