相关疑难解决方法(0)

使用IPython进行断点引发的Python交互式调试

假设我有一个IPython会话,我从中调用一些脚本:

> run my_script.py
Run Code Online (Sandbox Code Playgroud)

有没有办法诱导断点my_script.py,我可以从IPython检查我的工作区?

我记得在以前版本的IPython中可以看到:

from IPython.Debugger import Tracer;     

def my_function():
    x = 5
    Tracer()
    print 5;
Run Code Online (Sandbox Code Playgroud)

但是子模块Debugger似乎不再可用了.

假设我已经打开了一个IPython会话:如何让我的程序停止我选择的位置并使用IPython检查我的工作区

一般来说,我更喜欢不需要我预先指定行号的解决方案,因为我希望可能有多个这样的调用Tracer(),而不必跟踪它们所在的行号.

python debugging breakpoints ipython

33
推荐指数
6
解决办法
2万
查看次数

在IPython(Jupyter)笔记本中进行交互式调试

为了调试我的python代码,我使用了ipdb库,并使用set_trace()命令来设置断点.一旦代码到达那里,我得到一个带有ipdb>提示的交互式shell ,我可以使用制表符自动完成来探索局部变量.

但是,在IPython(Jupyter)笔记本中,ipdb.set_trace()它不起作用.正如这篇文章所建议的: 使用ipdb在一个单元格中调试python代码(jupyter或Ipython)

我使用以下替代方法进行交互式调试:

from IPython.core.debugger import Tracer
Tracer()() #this one triggers the debugger
Run Code Online (Sandbox Code Playgroud)

这为我提供了ipdb>提示,但标签自动完成功能不可用.无论如何使用ipython笔记本启用自动完成交互式调试?这非常有用,特别是当你有很多长名称的变量时.

python debugging ipython ipdb jupyter-notebook

6
推荐指数
1
解决办法
3597
查看次数

使用ipdb和Tracer调试Jupyter Notebook

在Jupyter Notebook中使用调试器时,我一直遇到问题,特别是以下命令:

from IPython.core.debugger import Tracer
Tracer()() #this one triggers the debugger
Run Code Online (Sandbox Code Playgroud)

每当我使用Tracer()()时,内联调试器就会按预期显示,但是一旦在字段中输入任何命令:n(ext),s(tep)等,我就会跳到该行:

finally:
  # Reset our crash handler in place
  sys.excepthook = old_excepthook
Run Code Online (Sandbox Code Playgroud)

这是问题和尝试调试的代码的图像(确切的代码无关,因为我能够在其他笔记本上重现该问题)。

Jupyter Notebook Tracer()()输出

我正在Mac上运行OSX El Capitan,并使用Anaconda for python 2.7。这是有关通过运行获得的当前设置的一些详细信息:

conda info --all (from root env)
Run Code Online (Sandbox Code Playgroud)

系统信息通过:conda info --all from(root)env

注意,我尝试了几种不同的调试选项:pdb,ipdb和Tracer(),但是每个选项都遇到了单独的问题。根据Stackoverflow问题(使用ipdb调试Jupyter中的Python代码),此时 Tracer()似乎是标准选项。

此外,我已经能够在运行Windows 7的Dell计算机上复制此问题。

任何帮助将不胜感激!

python debugging ipython ipdb jupyter-notebook

5
推荐指数
0
解决办法
327
查看次数