Подтвердить что ты не робот

AppEngine: пошаговая отладка

При работе с AppEngine локально (т.е. с помощью dev_appserver.py), есть ли способ выполнить пошаговую отладку? Это слишком старый способ использовать logging.info() или подобные функции, чтобы показать значения всех переменных в коде и решить, где ошибка.

4b9b3361

Ответ 1

Развернуть немного на codeape ответьте на первое предложение: Потому что dev_appserver.py галочки с stdin, stdout и stderr, требуется немного больше работы, чтобы установить "контрольную точку кода". Это делает трюк для меня:

import sys
for attr in ('stdin', 'stdout', 'stderr'):
    setattr(sys, attr, getattr(sys, '__%s__' % attr))
import pdb
pdb.set_trace()

Вам нужно запустить dev_appserver.py из командной строки, а не через GUI App Engine Launcher. Когда выполняется строка pdb.set_trace(), вы будете отброшены в отладчик pdb в этой точке.

Ответ 3

Если локальный процесс appengine является обычным процессом python, у вас есть несколько вариантов:

  • В вашем коде поместите "контрольные точки кода": import pdb; pdb.set_trace(). Запустите dev_appserver.py как обычно, и отладчик python будет разбиваться, когда он достигнет строки с кодом.

  • Запустите dev_appserver.py в pdb. Из оболочки: $ python -m pdb dev_appserver.py. Чтобы установить точку останова, используйте команду b filename.py:linenumber. Затем используйте команду c для продолжения. См. http://docs.python.org/library/pdb.html#debugger-commands

См. документацию pdb.

Ответ 4

PyCharm Professional Edition позволяет поэтапную отладку из коробки.

Если вы захотите пройти несколько этапов настройки, бесплатную версию PyCharm Community Edition можно настроить для работы с питоном Google App Engine. Вы не получите всех преимуществ PyCharm Professional Edition, таких как развертывание, но вы сможете делать пошаговую отладку и получать кодовую навигацию и автозаполнение.

Чтобы включить отладку, отредактируйте конфигурацию Run/Debug PyCharm, установив:

  • Script: App Engine dev_appserver.py
  • Script параметры: --automatic_restart=no --max_module_instances="default:1" .
  • Рабочий каталог: ваша базовая папка проекта (та, которая содержит файл app.yaml).

Для получения более подробных инструкций, объяснений и получения кода завершения работы в проекте aup PyCharm CE см. http://www.enkisoftware.com/devlogpost-20141231-1-Python_Google_App_Engine_debugging_with_PyCharm_CE.html.

Если вы работаете в Windows и хотите использовать PyTools (сообщество Microsoft Visual Studio) для отладки python для GAE, см. http://www.enkisoftware.com/devlogpost-20140814-1-Python_Google_App_Engine_debugging_with_PyTools.html