问题描述
我正在尝试了解 jupyter 笔记本中的调试。根据我的理解,应用 breakpoint()
是解决问题的方法,但我遇到了下面描述的一些问题。我在 test_debugger.py
中有一个名为 ./
的文件,我将它用作我小小的理解努力中的道具。
#./test_debugger.py
def fun1(a):
print(a)
breakpoint()
if a > 3:
print(a+1)
breakpoint()
print(a+2)
breakpoint()
return None
设置:
from test_debugger import *
问题:
- breakpoint() 进入调试交互式 shell:
print(5)
breakpoint()
fun1(4)
breakpoint()
运行上面的代码给了我
5
--Return--
None
> <ipython-input-2-4276bdd18b42>(2)<module>()
1 print(5)
----> 2 breakpoint()
3 fun1(4)
4 breakpoint()
ipdb>
我按 n
并且我想跳到单元格中的下一行,但我猜它会进入调试交互式 shell。按n
后我得到:
ipdb> n
[... skipped 1 hidden frame]
[... skipped 1 hidden frame]
[... skipped 1 hidden frame]
[... skipped 1 hidden frame]
> /home/nitin/miniconda/envs/nyraml386/lib/python3.8/site-packages/IPython/core/interactiveshell.py(3330)run_ast_nodes()
3328 to_run.append((node,'single'))
3329
-> 3330 for node,mode in to_run:
3331 if mode == 'exec':
3332 mod = Module([node],[])
ipdb>
问题:如何获得所需的 n
功能(跳转到我编写的代码中的下一行,同时保持相同的功能分数)和 s
(跳转到我编写的代码中的下一行,同时在必要时切换函数范围)。
- PYTHONBREAKPOINT 在 jupyter notebook 中不可用
预期的行为:我已经读过,如果我想禁用所有 breakpoint()
,那么我可以设置环境变量 PYTHONBREAKPOINT
来管理 breakpoint()
的行为。具体来说,我可以设置 PYTHONBREAKPOINT=0
来禁用 breakpoint()
看到的行为:PYTHONBREAKPOINT
在 jupyter notebook 中根本不是一个可用的变量。即使我将它设置为 0 也不会改变禁用 breakpoint()
。好像什么都没发生过
问题:在 jupyter notebooks 中操作时如何管理 breakpoint()
。将PYTHONBREAKPOINT
带入notebook的方法是什么
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)