jupyter notebook 中的 Python 调试

问题描述

我正在尝试了解 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...