Я хочу использовать возможности интроспекции python для отладки/разработки, но не могу найти подходящий инструмент для этого.Что является лучшим способом для интерактивной отладки в python?
Мне нужно войти в оболочку (например, IPython) в определенной позиции или в конкретном событии (например, исключение), причем локали и глобальные оболочки оболочки устанавливаются в кадры.
Мой собственный быстрый хак для иллюстрации:
import inspect
from IPython.Shell import IPShellEmbed
def run_debug():
stack = inspect.stack()
frame = stack[1][0]
loc = frame.f_locals
glob = frame.f_globals
shell = IPShellEmbed()
shell(local_ns=loc, global_ns=glob)
С по run_debug() вызова от 'точки останова' или попробовать/за исключением. Но, очевидно, для этого требуется много полирования, особенно для работы с потоковыми приложениями.
winpdb имеет точки останова с консолью, но я не нашел возможности быстро запустить из нее правильную оболочку python, и eval()/exec() не очень удобны для долгого отладки.
Спасибо, их версия Pro действительно нуждается в функциональности, и она останавливает выполнение процесса перед запуском оболочек, поэтому потоковая передача не является проблемой. Довольно грустно, что его запатентовал, но, похоже, он получает то, за что вы платите. –
Я предполагаю, что это одно из преимуществ взимания платы - они могут позволить себе нанимать людей и оплачивать их для работы над такими проблемами;) Конечно, если это слишком дорого, вы всегда можете осмотреться на местной конференции python и предложить им спросить Крыло для некоторых раздаточных копий. Они давали нам 3-4 каждый год, которые мы задавали, и все другие дела, которые я слышал с ними, были впечатляющими. –