Пост обещает быть сверхкратким.
ExConsole позволяет встроить интерактивную консоль-отладчик в Python-приложение. Консоль вызывается при фатальном исключении либо по приему SIGQUIT (он же Ctrl-).
Пример использования:
import exconsole
exconsole.register()
do_dangerous_stuff()
Пример работы с консолью:
Activating emergency console
----------------------------
Caused by:
ZeroDivisionError
integer division or modulo by zero
Stack frames:
[ 0] example.py:17
[ 1] example.py:15
Tester().test()
[ 2] example.py:9
self.inner()
[ 3] example.py:6
self.divide(2, 0)
> [ 4] example.py:3
return a / b
On frame 4
Source:
def divide(self, a, b):
>> return a / b
Press Ctrl-D to leave console
Type "_help()"" for built-in commands
>>> print a,b
2 0
>>> _f(3)
On frame 3
Source:
def inner(self):
>> self.divide(2, 0)
>>> print self
<__main__.Tester instance at 0x7f67c9a0e440>
Консоль поддерживает перемещение по фреймам стека и работу с местными переменными, а также позволяет выйти и продолжить выполнение приложения.
Встроенные команды:
- _s() — вывод стека
- _f(index) — перемещение в другой фрейм
- _exc — объект пойманного исключения (если оно было)
Поддерживается Python 2.6+ и 3.
Пакеты для Debian и CentOS доступны в репозитории Ajenti
Ссылки: Github PyPI
Автор: hardex