Как остаться в отладчике после ошибки? - PullRequest
0 голосов
/ 25 января 2019

Когда я отлаживаю цикл, отладчик завершает работу при обнаружении ошибки.Можно ли оставаться внутри отладчика, чтобы я мог исследовать состояние программы прямо перед ошибкой?

Например,

import pdb;pdb.set_trace()

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

Я хотел бы нажать c, чтобыотладчик продолжает работать через цикл до последней итерации.Затем вместо выхода отладчик остается активным, чтобы я мог посмотреть, какое значение i вызывает ошибку.

1 Ответ

0 голосов
/ 25 января 2019

То, что вы ищете, это pdb.post_mortem.Код, который может дать сбой, должен быть инкапсулирован в блок try / Кроме того, чтобы обработчик вызывал эту функцию, например:

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

Выполнение:

2.0
1.0
0.6666666666666666
> (3)<module>()
-> print(2/i)
(Pdb) 

Теперь оболочка pdbв точке отказа.

...