为什么 Python 的断点和 ipdb 会这样?

问题描述

我习惯于使用 PyCharm 在 Python 中进行调试。

现在我正在尝试将 ipdb 与 Jupyter(准确地说是实验室)一起使用。

但是下面的两种行为真的让我很困惑!

一个

breakpoint()
for i in range(3):
    print(i)

然后在调试器中:

--Return--
None
> <ipython-input-10-45409e3598c5>(1)<module>()
----> 1 breakpoint()
      2 for i in range(3):
      3     print(i)

ipdb>  n

    [... skipped 1 hidden frame]

    [... skipped 1 hidden frame]

    [... skipped 1 hidden frame]

    [... skipped 1 hidden frame]

> c:\users\icar\anaconda3\envs\jlab3\lib\site-packages\ipython\core\interactiveshell.py(3349)run_ast_nodes()
   3347                     to_run.append((node,'single'))
   3348 
-> 3349                 for node,mode in to_run:
   3350                     if mode == 'exec':
   3351                         mod = Module([node],[])

为什么 ipdb next 使 ipdbrun_ast_nodes 中停止?

它不应该等同于跨过吗?

第二个

for i in range(3):
    breakpoint()
    print(i)

然后在调试器中:

None
> <ipython-input-9-2b8431878fa0>(3)<module>()
      1 for i in range(3):
      2     breakpoint()
----> 3     print(i)

ipdb>  c

0
None
> <ipython-input-9-2b8431878fa0>(2)<module>()
      1 for i in range(3):
----> 2     breakpoint()
      3     print(i)

ipdb>  c

1
None
> <ipython-input-9-2b8431878fa0>(3)<module>()
      1 for i in range(3):
      2     breakpoint()
----> 3     print(i)

什么可以解释 ipdb continue 交替停在第 3 行,然后是第 2 行,然后是第 3 行?

我想我错过了一些东西,但我无法得到它,这只是基本的东西......

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

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