如何使产量在调试模式下工作



我正在使用ipdb和yield。我注意到与 ipdb 一起使用时,产量不符合预期。

具体来说,此代码在使用 ipdb 进行调试时(并按"n"键盘中的字符只是跳过 yield 命令而不是从函数返回(

def cats():
    print(-1)
    yield
    for i in range(4):
        print(i)
        yield
import ipdb
ipdb.set_trace()
x = cats()
next(x)
next(x)
next(x)

如何解决这个问题?

ipdb 和 pdb 都需要yield有一个语句才能在 cats(( 内部停止,并且没有。有趣的是,pdb 将在返回时停止,例如:

def cats2():
        if len(__file__) > 5:
            import pdb; pdb.set_trace()
cats2()

老实说,在 pdb 及其衍生产品(如 ipdb(的背景下,我想不出解决方案。

trepan 调试器 trepan3k(适用于 python 3(和 trepan2 不会遇到此问题。他们对待yield的方式与 pdb 对待return 的方式相同。正是为了这样的事情,修复了很多 pdb 无法处理的边缘情况,我编写了这些调试器。

相关内容

  • 没有找到相关文章

最新更新