2010-10-31 4 views
1

Использование WingIDE для отладки веб-приложения, я установил точку останова в каком-то коде Python, который запускается при отправке веб-формы. Незадолго до точки останова я вставил «import wingdbstub», чтобы активировать удаленное дезакционирование. Однако выполнение не останавливается на контрольной точке. Я знаю, что код запущен, потому что если я вставляю «raise exception (sys.modules)» непосредственно перед точкой останова, выполнение останавливается, и в моем браузере появляется трассировка, показывая, что загружен файл wingdbstub.Удаленная отладка с WingIDE

Если я навешиваю значок ошибки в строке состояния, в диалоговом окне говорится: «Нет процесса отладки/прослушивания подключений по TCP/IP 50005. Разрешенные узлы 127.0.0.1». Я знаю, что у меня есть «потерянный» режим отладки, когда a) значок ошибки изменяется с зеленого на белый, и b) кнопки панели инструментов отладки (шаг в, над, из и т. Д.) Исчезают.

Я попытался удалить скомпилированные файлы .pyc, чтобы они перекомпилировали, когда следующий модуль запускается, но проблема остается.

Как я могу проверить, слушает ли Wing на правильном порту? Странная вещь заключается в том, что удаленная отладка работала иногда, но большую часть времени ее нет.

Любая помощь будет оценена по достоинству. Для записи я использую Python 3.1, CherryPy 3.20 и WingIDE Personal 3.2.11.

Аланы

ответ

1

В операционной системе Windows, я испытал такое же поведение, вы упоминаете, то есть, удаленная отладка иногда работает, но часто «застревает». Я нашел несколько полезных вещей для решения этой проблемы:

  1. Убедитесь, что ваш брандмауэр не блокирует трафик в/из портов, используемых WingIDE, и процесс отладки. (В моем случае мне пришлось разблокировать оба файла wing.exe и, которые я пытался отлаживать в брандмауэре Windows.)
  2. Убедитесь, что вы не накопили никаких процессов python-зомби после неудачных сеансов отладки. Они могут открывать соединение с IDE, что делает невозможным подключение вновь созданного экземпляра. (В Windows, вы можете использовать команду tasklist, чтобы проверить запуск экземпляров питона и netstat -anp tcp покажет какие сокеты застряли в состоянии TIME_WAIT.)
  3. Вставьте time.sleep(10) вызов сразу после import wingdbstub заявления. Запустите программу с консоли, убедитесь, что она подключена в среде IDE (значок отладки станет зеленым), затем нажмите кнопку «Пауза» в среде IDE, а затем «Выйти». (Я не могу начать объяснять, почему, но это оказалось правильным для корабля для меня пару раз после того, как соединение отладки стало неудобным.)

Вышеупомянутый совет, вероятно, относится и к Linux, но я 've только испытал эту проблему в Windows до сих пор ...

+0

Спасибо evadeflow - я попробую ваши предложения и посмотрю, как я нахожусь. С уважением. –

Смежные вопросы