Удаленная отладка с WingIDE - PullRequest
1 голос
/ 31 октября 2010

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

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

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

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

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

Alan

1 Ответ

2 голосов
/ 29 ноября 2010

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

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

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

...