Я хочу использовать возможности самоанализа 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 () из точки останова или попробуйте / except. Но, очевидно, это требует большой доработки, особенно для правильной работы с многопоточными приложениями.
winpdb имеет точки останова с консолью, но я не нашел способа быстро запустить из нее надлежащую оболочку python, а eval () / exec () не очень удобны для длительной отладки.