遇到错误后如何留在调试器中?

时间:2019-01-25 03:56:57

标签: python debugging pdb

当我调试循环时,调试器在遇到错误时退出。是否可以留在调试器中,以便我可以在错误发生之前调查程序的状态?

例如,

import pdb;pdb.set_trace()

for i in [1, 2, 3, 0]:
    print(2/i)

我想点击c,以便调试器在整个循环中一直运行直到最后一次迭代。然后,调试器没有退出,而是保持活动状态,这样我就可以查看导致错误的i的值。

1 个答案:

答案 0 :(得分:0)

您要寻找的是pdb.post_mortem。应该将可能失败的代码封装在try / except块中,并由处理程序调用该函数,例如:

<%= raw(@blog.body) %>

执行:

try:
    for i in [1, 2, 3, 0]:
        print(2/i)
except Exception:
    import pdb
    pdb.post_mortem()

pdb shell现在处于故障点。