Точки останова PyDev в App Engine 1.7.6 не работают?

Я только что обновился до App Engine 1.7.6 SDK для своего приложения Python и понял, что точки останова больше не работают в PyDev (подключаемый модуль Eclipse) при использовании новый dev_appserver.py.

Кто-нибудь знает способ включить их снова? Я предполагаю, что новый сервер порождает новый процесс для веб-сервера, и отладчик не подключается к нему. Я не уверен, как настроить его для этого.

А пока я использую сервер old_dev_appserver.py.


person Dylan    schedule 20.03.2013    source источник
comment
Под «больше не работает» я подразумеваю, что точки останова не запускаются в Eclipse IDE.   -  person Dylan    schedule 20.03.2013
comment
как раз собирался задать тот же вопрос   -  person matcheek    schedule 20.03.2013
comment
Я отправил задачу в проект AppEngine: code.google.com/p /googleappengine/issues/detail?id=9012   -  person matcheek    schedule 20.03.2013
comment
Это как-то связано с новым предупреждением pyobjc? stackoverflow.com/questions/15513642/   -  person Shaun Budhram    schedule 21.03.2013
comment
Я не уверен, но у меня osx и установлен xcode. Сервер работает нормально, просто точки останова в pydev не работают.   -  person Dylan    schedule 22.03.2013
comment
Я могу подтвердить то, что вы видите: с SDK версии 1.7.6 точки останова не срабатывают в Eclipse с PyDev, и использование old_dev_appserver.py, похоже, решает проблему.   -  person SNyamathi    schedule 29.03.2013
comment
То же самое здесь, Windows 7, Eclipse 4.2, PyDev 2.7.3, GAE 1.7.6. Точки останова не сбиваются. Я попробовал предложение позвонить MonkeyPatchPdb, это тоже не помогло. Непонятно, как это должно было помочь. Я не использую вызовы pdb.set_trace() в своем коде. Я полагаюсь на интерактивную отладку PyDev.   -  person Michael Kariv    schedule 04.04.2013


Ответы (3)


ОБНОВЛЕНИЕ 2012-07-27:

После комментария я убедился, что проблема решена после обновления до PyDev. 2.8 и App Engine 1.8.2

УСТАРЕВШИЙ:

Я нашел следующий анализ проблемы по адресу отслеживание ошибок googleappengine

Причина, по которой PDB не работает, заключается в том, что dev_appserver использует stdin/stdout для межпроцессного взаимодействия. Python имеет встроенные библиотеки для IPC: http://docs.python.org/2/library/ipc.html. dev_appserver должен использовать их, а затем stdin/stdout можно оставить в покое, чтобы PDB продолжал работать.

Таким образом, кажется, что обходного пути нет, вместо того, чтобы вернуться к использованию old_dev_appserver.py.

ОБНОВЛЕНИЕ 2013-04-23: Невозможность отладки раздражает. Многие разработчики жалуются на это

  1. Точки останова PyDev в App Engine 1.7.6 не работают?
  2. https://groups.google.com/forum/?fromgroups=#!topic/google-appengine/ep5BWYKpQpU
  3. https://groups.google.com/forum/?fromgroups=#!topic/google-appengine/TCQuJpF44cY
  4. https://code.google.com/p/appengine-devappserver2-experiment/issues/detail?id=28
  5. https://code.google.com/p/googleappengine/issues/detail?id=9012

Я слежу за развитием этой проблемы здесь: http://goo.gl/XRU01

person Michael Kariv    schedule 04.04.2013
comment
Просто отметим, что PyDev 2.8.0 теперь поддерживает новые хуки в Google App Engine, поэтому отладка должна снова работать. Подробности о выпуске см. на странице pydev.org. - person Fabio Zadrozny; 26.07.2013
comment
У меня была та же проблема, что и у Дилана, и я подтверждаю, что она решена с помощью PyDev 2.8. - person Vladimir Obrizan; 27.07.2013
comment
Спасибо за сообщение. Кажется, у нас достаточно доказательств, чтобы сделать вывод, что проблема наконец-то решена. Лично я думаю, что это позор, что это заняло так много времени. - person Michael Kariv; 28.07.2013
comment
Это все еще не работает для меня после обновления GAE и PyDev до последних версий. Я даже пытался переустановить Eclipse, PyDev и GAE. Простое изменение цели обратно на «old_dev_appserver.py» устраняет проблему. - person Shaun Budhram; 12.08.2013

Ага, столкнулся с той же проблемой.

Откройте конфигурацию запуска/отладки и установите для основного модуля значение:

${GOOGLE_APP_ENGINE}/old_dev_appserver.py
person Kevin    schedule 31.03.2013

Вы имеете в виду, что pdb.set_trace() не работает?

Найдите функцию MonkeyPatchPdb() в google/appengine/tools/dev_appserver.py.

Запустите это где-нибудь в своем собственном проекте, прежде чем использовать pdb, и это должно исправить это.

person dragonx    schedule 20.03.2013
comment
MonkeyPatchPdb, похоже, не существует в новом dev_appserver.py. Я не уверен, что PyDev использует Pdb, я просто устанавливаю точки останова в Eclipse IDE. Однако я попытался использовать pdb.set_trace, и это привело к завершению работы скрипта. - person Dylan; 20.03.2013
comment
Это то, как это должно работать: поместить приведенный ниже код в ваш /main.py? из google.appengine.tools.dev_appserver import MonkeyPatchPdb import pdb MonkeyPatchPdb(pdb) - person Michael Kariv; 04.04.2013