depuração Django com o Emacs

votos
19

Eu encontrei um monte de informações sobre como depurar programas em Python simples com Emacs. Mas o que se eu quiser depurar um aplicativo Django? Eu corro o servidor de desenvolvimento e eu gostaria de anexar alguma forma para o processo de Emacs e, em seguida, definir pontos de interrupção, etc. similares para Visual Studio de anexar ao processo. Como fazer isso?

Publicado 12/11/2008 em 09:15
fonte usuário
Em outras línguas...                            


6 respostas

votos
17

Isto não é emacs específico, mas você pode usar o depurador Python adicionando o seguinte a uma função de visualização Django:

import pdb; pdb.set_trace()

Agora, quando você executar o servidor de desenvolvimento e visualizar a página, o navegador irá aparecer para pendurar ou carregar muito lentamente - mudar para o seu console, e você tem acesso ao depurador completo. Você pode inspecionar e modificar o estado do seu pedido através de um shell interativo - confira a documentação do Python para o depurador, ou neste link para alguns exemplos Python depuração


Se tudo que você precisa é iniciar sessão, adicione o seguinte ao seu settings.py:

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

Agora você pode registrar mensagens para /tmp/mylog.logadicionando o seguinte para qualquer função de visualização:

import logging
logging.debug("Something happened")
Respondeu 12/11/2008 em 17:57
fonte usuário

votos
12

Comece APO assim:

M-x pdb

Em seguida, iniciar o servidor de desenvolvimento do Django:

python manage.py runserver --noreload

Depois de ter o prompt (APO), você precisa fazer isso:

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

Uma vez feito isso, você deve ser capaz de definir pontos de interrupção normalmente. Basta navegar até o número da linha que deseja e

C-x SPC

Respondeu 03/11/2009 em 08:33
fonte usuário

votos
3

Aqui está algo que eu encontrei na noite passada que vai fazer exatamente o que você quer quando as falhas do programa:

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

Uma vez que você instala que você pode executar:

python manage.py runserver_plus

e você terá um interativo AJAX consoleem sua Errorpágina. (Obviamente, ter cuidado com a quantidade de acesso as pessoas têm que este servidor web ao executar nesse modo.)

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

Você pode obter extensões de Django usando pip ou easy_install:

$ Pip instalar o Django-extensões ou $ easy_install django-extensões

Se você quiser instalá-lo a partir da fonte, pegue o repositório git do GitHub e setup.py executar:

$ Git clone git: //github.com/django-extensions/django-extensions.git
$ cd Django-extensões
$ python setup.py install

Respondeu 13/11/2008 em 11:01
fonte usuário

votos
1

Porque as versões recentes do modo de python Emacs fazer suporte funcionalidade 'pdbtrack' por padrão, tudo que você precisa é apenas configurar ponto de interrupção em seu código da seguinte maneira:

import pdb; pdb.set_trace()

Além disso, você tem que começar seu devserver aplicação Django de dentro shell Emacs:

M-x shell

E então, no shell, inicie o servidor de desenvolvimento do Django:

python ./manage.py runserver

PS Não há necessidade de sessões PDB específicos ou bandeira --noreload. Noreload exigiria que você reiniciar manualmente seus aplicativos e então eu não encontrar este útil para Emacs.

Respondeu 14/09/2011 em 16:27
fonte usuário

votos
0

Sobre o modo não-emacs exclusiva geral, há um muito bom screencast lá fora que você pode estar interessado em: http://ericholscher.com/blog/2008/aug/31/using-pdb-python-debugger-django- depuração-séries /

A integração emacs descrito acima não funciona para mim ainda. Ele realmente não parece se conectar ao aplicativo em execução.

Além disso, eu considero este post aqui muito interessante: http://web.archive.org/web/20101230072606/http://panela.blog-city.com/python_and_emacs_5_pdb_and_emacs.htm

cu Roman

Respondeu 13/09/2011 em 09:02
fonte usuário

votos
0

Eu realmente não sei nada sobre isso, mas colocando "depuração Python com o Emacs" no Google me deu esta página sobre depuração torcido com o Emacs , por isso parece ser possível.

Respondeu 12/11/2008 em 15:16
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more