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

发布于 2021-01-29 15:08:51

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

> run my_script.py

有没有一种方法可以引入断点,my_script.py从中可以从IPython检查工作区?

我记得在以前的IPython版本中可以做到这一点:

from IPython.Debugger import Tracer;

def my_function():
    x = 5
    Tracer()
    print 5;

但是该子模块Debugger似乎不再可用。

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

通常,我更喜欢不需要我预先指定行号的解决方案,因为我希望Tracer()上面有多个这样的调用,而不必跟踪行号所在的位置。

关注者
0
被浏览
66
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    Tracer()仍然存在IPython中在不同的模块。您可以执行以下操作:

    from IPython.core.debugger import Tracer
    
    def my_function():
        x = 5
        Tracer()()
        print 5
    

    注意周围的其他通话括号 Tracer

    编辑Tracer
    建议使用IPython
    6及更高版本因此应set_trace()改用:

    from IPython.core.debugger import set_trace
    
    def my_function():
        x = 5
        set_trace()
        print 5
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看