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

Отладка Django с помощью Emacs

Я нашел много информации о том, как отлаживать простые программы Python с помощью Emacs. Но что, если я хочу отлаживать приложение Django? Я запускаю сервер разработки, и я хотел бы как-то подключиться к процессу из Emacs, а затем установить точки останова и т.д. Подобно Visual Studio "присоединяется к процессу". Как это сделать?

4b9b3361

Ответ 1

Запустите pdb следующим образом:

M-x pdb

Затем запустите сервер разработки Django:

python manage.py runserver --noreload

Как только у вас появится приглашение (Pdb), вам нужно сделать это:

import sys
sys.path.append('/path/to/directory/containing/views.py')

Как только вы это сделаете, вы сможете установить контрольные точки в обычном режиме. Просто перейдите к нужному номеру строки и

C-x SPC

Ответ 2

Это не относится к emacs, но вы можете использовать отладчик Python, добавив следующее в функцию просмотра Django:

import pdb; pdb.set_trace()

Теперь, когда вы запустите сервер разработки и просмотрите страницу, ваш браузер, похоже, будет медленно или медленно загружаться - переключитесь на консоль и получите доступ к полному отладчику. Вы можете проверить и изменить состояние своего приложения через интерактивную оболочку - проверить документацию Python для отладчика или эту ссылку для некоторых примеров отладки Python


Если вам нужно всего лишь регистрировать, добавьте следующее к settings.py:

logging.basicConfig(
    level = logging.DEBUG,
    format = '%(asctime)s %(levelname)s %(message)s',
    filename = '/tmp/mylog.log',
    filemode = 'w'
)

Теперь вы можете записывать сообщения в /tmp/mylog.log, добавляя к любой функции просмотра следующее:

import logging
logging.debug("Something happened")

Ответ 3

Здесь что-то, что я нашел вчера вечером, будет делать именно то, что вы хотите, когда программа выйдет из строя:

http://code.google.com/p/django-command-extensions/

После установки, которую вы можете запустить:

python manage.py runningerver_plus

и на странице Error вы получите интерактивный AJAX console. (Очевидно, будьте осторожны с тем, сколько людей имеют доступ к этому веб-серверу при работе в этом режиме.)

GitHub: https://github.com/django-extensions/django-extensions

Вы можете получить расширения Django с помощью pip или easy_install:

$pip установить django-extensions или $easy_install django-extensions

Если вы хотите установить его из источника, возьмите репозиторий git из GitHub и запустите setup.py:

$git клон git://github.com/django-extensions/django-extensions.git
$ cd django-extensions
$ python setup.py install

Ответ 4

Поскольку последние версии режима python Emacs поддерживают функцию "pdbtrack" по умолчанию, все, что вам нужно, это просто настроить точку останова в коде следующим образом:

import pdb; pdb.set_trace()

Кроме того, вы должны запустить devserver приложения Django из оболочки Emacs:

M-x shell

И затем в оболочке запустите сервер разработки Django:

python ./manage.py runserver

P.S. Нет необходимости в конкретных сеансах pdb или -noreload. Noreload потребует, чтобы вы вручную перезапустили свои приложения, и поэтому я не считаю это полезным для Emacs.

Ответ 5

Я ничего не знаю об этом, но, поставив "отладку Python с emacs" в Google, дал мне эту страницу о отладка, скрученная с emacs, так что это кажется возможным.

Ответ 6

Об общем эксклюзивном способе, отличном от emacs, есть очень хороший screencast, который вас может заинтересовать: http://ericholscher.com/blog/2008/aug/31/using-pdb-python-debugger-django-debugging-series-/

Интеграция Emacs, описанная выше, пока не работает. На самом деле это не похоже на запущенное приложение.

Далее я считаю, что это сообщение в блоге очень интересно: http://web.archive.org/web/20101230072606/http://panela.blog-city.com/python_and_emacs_5_pdb_and_emacs.htm

у.е. Roman