Я только что столкнулся с подобной проблемой в гораздо более простом сценарии использования:
- отладка простой программы на Python, запущенной из командной строки, в которой файл был передан в
sys.stdin
, то есть нетспособ использования консоли для pdb
.
В итоге я решил ее с помощью wdb .
Быстрое краткое изложение для моего сценария использования.В оболочке установите сервер wdb и клиент wdb:
pip install wdb.server wdb
Теперь запустите сервер wdb с помощью:
wdb.server.py
Теперь вы можете перейти к localhost: 1984 с помощью браузера.и увидеть интерфейс со списком всех запущенных программ на Python.На странице проекта wdb, приведенной выше, есть инструкции о том, что вы можете сделать, если хотите отладить любую из этих запущенных программ.
Что касается программы, находящейся под вашим контролем, вы можете отладить ее с самого начала с помощью:
wdb myscript.py --script=args < and/stdin/redirection
Или, в вашем коде, вы можете сделать:
import wdb; wdb.set_trace()
Это откроет интерфейс в вашем браузере (если он локальный), показывающий отслеживаемую программу.
Или вы можете перейти к порту wdb.server.py, чтобы увидеть все текущие сеансы отладки в верхней части списка запущенных программ Python, которые затем можно использовать для доступа к конкретному сеансу отладки, который вы хотите.
Обратите внимание, чтоКоманды для навигации по коду во время трассировки отличаются от стандартных pdb
, например, чтобы войти в функцию, которую вы используете .s
вместо s
, и чтобы перешагнуть через .n
вместо n
,Подробнее см. wdb
README по ссылке выше.