4 ответов:
использовать Winpdb. Это независимая платформа графический отладчик GPL Python с поддержкой удаленной отладки по сети, нескольких потоков, модификации пространства имен, встроенной отладки, зашифрованной связи и до 20 раз быстрее, чем pdb.
характеристики:
- лицензия GPL. Winpdb-это бесплатное программное обеспечение.
- совместимость с CPython 2.3 через 2.6 и Python 3000
- совместимость с wxPython 2.6 через 2.8
- платформа независимая, и протестирована на Ubuntu Gutsy и Windows XP.
- пользовательские интерфейсы: rpdb2 основан на консоли, в то время как winpdb требует wxPython 2.6 или более поздней версии.
скриншот http://winpdb.org/images/screenshot_winpdb_small.jpg
Ну, вы можете получить что-то очень похожее на это, используя витой люк, который работает так:
from twisted.internet import reactor from twisted.cred import portal, checkers from twisted.conch import manhole, manhole_ssh def getManholeFactory(namespace): realm = manhole_ssh.TerminalRealm() def getManhole(_): return manhole.Manhole(namespace) realm.chainedProtocolFactory.protocolFactory = getManhole p = portal.Portal(realm) p.registerChecker( checkers.InMemoryUsernamePassword DatabaseDontUse(admin='foobar')) f = manhole_ssh.ConchFactory(p) return f reactor.listenTCP(2222, getManholeFactory(globals())) reactor.run()тогда вы просто войти в программу через SSH;
$ ssh admin@localhost -p 2222 admin@localhost's password:используя foobar как пароль.
при входе в систему вы получите обычное приглашение python, где вы можете просто ткнуть в данные. Это не совсем то же самое, что получить обратную связь, отправленную на хост.
теперь это может быть сложно интегрировать в программу GUI, в этом случае вам может потребоваться выбрать другой реактор, например, для программ на основе gtk используется gtk2reactor и т. д.
Если вы хотите, чтобы фактическая обратная связь была отправлена, вам нужно создать канал сокета для stderr, stdin и stdout, который идет по сети вместо печати на локальном хосте. Не должно быть слишком сложно выполнить с помощью twisted.
немного поздно, но вот очень легкое решение для удаленной отладки любезно предоставлено http://michaeldehaan.net/post/35403909347/tips-on-using-debuggers-with-ansible:
pip install epdbна удаленном хосте.- убедитесь, что ваша установка брандмауэра не разрешает нелокальные подключения к порту 8080 на удаленном хосте, так как
epdbпо умолчанию прослушивание по любому адресу (INADDR_ANY), а не 127.0.0.1.- вместо
import pdb; pdb.set_trace()в вашей программе, используйтеimport epdb; epdb.serve().- безопасный вход на удаленный хост, так как
epdb.connect()использует telnet.- подключить к программе с помощью
python -c 'import epdb; epdb.connect()'.отрегулируйте биты безопасности в соответствии с вашими настройками локальной сети и позицией безопасности, конечно.
два решения из современных IDEs:
кросс-платформенная удаленная отладка PTVS
PyCharm/PyDev удаленная отладка
Comments