Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 正在Jupyter中停止ipdb调试_Python_Ipython_Jupyter - Fatal编程技术网

Python 正在Jupyter中停止ipdb调试

Python 正在Jupyter中停止ipdb调试,python,ipython,jupyter,Python,Ipython,Jupyter,我正在使用Jupiter并尝试学习如何调试。但是,我无法完全退出调试模式 for i in np.arange(1,10, 0.01): a = someFunc(i) # I want to check the value of "a" in each iteration # here! from IPython.core.debugger import Tracer; Tracer()() #this one triggers the debugger 如果

我正在使用Jupiter并尝试学习如何调试。但是,我无法完全退出调试模式

for i in np.arange(1,10, 0.01):
    a = someFunc(i)
    # I want to check the value of "a" in each iteration
    # here!
    from IPython.core.debugger import Tracer; Tracer()() #this one triggers the debugger

如果我运行此代码并在调试ipdb提示符中键入“q”或“exit”,它将继续运行代码,直到下一个断点,并且我无法停止调试。如何停止调试?我查看了文档,但找不到除“q”之外的任何其他命令。

在进入循环之前,您需要开始跟踪。当前的情况是,在每个循环步骤中创建一个新的调试器实例

您的代码如下所示:

from IPython.core.debugger import Tracer

for i in np.arange(1,10, 0.01):
    a = someFunc(i)
    Tracer()()

您将得到一个命令行提示符,其中可以使用所有标准ipdb函数。通过在执行
someFunc(i)
之后立即调用Tracer,每次迭代都会得到一个新的提示。要继续执行直到下一次迭代,请使用
c
命令。要设置断点,请使用
b
q
将同时停止执行。

谢谢miktik。然后,如果我想像上面那样检查循环内部“a”的值,如何在for循环内部设置断点?
Tracer()()
充当断点,您可以将其放在要检查的行之前或之后。我已经更新了我的答案,希望有帮助(如果有,请接受答案)。谢谢更新。但是,如果我运行上面的代码,我仍然无法通过键入“q”退出循环。例如,如果我在一次迭代中输入“q”,我就进入下一次迭代,这意味着我必须按“q”1000次才能退出循环。当断点插入到循环中时,是否还有其他方法可以从循环中退出?很有趣。对我来说,如果
Tracer
在循环外部导入并在循环内部初始化,
q
退出调试器并中断循环执行hmmmmm。。。这真的很烦人:(