Как я могу ретроспективно отладить исключение python

Я ищу способ отладить исключение python «ретроспективно». По сути, если моя программа вызывает исключение, которое не обрабатывается, я хочу, чтобы она сохраняла состояние программы, чтобы я мог вернуться позже и отладить проблему.

Я просмотрел документацию pdb, и кажется что вы можете это сделать, но только если вы можете взаимодействовать с программой в момент возникновения исключения. У меня это не сработает, так как программа будет работать в фоновом режиме (без управляющего терминала).

Мой первый (обреченный!) Подход заключался в том, чтобы поместить блок try / except на самый высокий уровень моей программы, а в блоке except извлечь объект трассировки из текущего исключения и записать его на диск с помощью pickle. Затем я планировал написать отдельную программу, которая будет извлекать объект и использовать pdb.post_mortem для отладки сбойной программы. Но объекты трассировки не поддаются консервированию, но я бы не ожидал, что это сработает в любом случае, поскольку это не сохранит все состояние программы.

6
задан yoda_alex 26 November 2010 в 21:47
поделиться