Pergunta

Estou prestes a iniciar uma boa quantidade de trabalho que se estende Trac para atender nossos requisitos de negócios. Até agora eu usei PythonWin e agora Netbeans 6.5 como os ambientes de desenvolvimento -. Nenhum destes parecem fornecer alguma forma de depurar o plugin Eu estou trabalhando em

Eu sou totalmente novo para Python então provavelmente não tiver configurado o ambiente de desenvolvimento como poderia ser congfigured para obtê-lo de depuração.

Am I faltando alguma coisa óbvia? Parece um arcaico pouco de ter que recorrer a imprimir mensagens de depuração no log do Trac, que é como eu estou depuração no momento.

Foi útil?

Solução

Você pode criar um script wrapper wsgi e executá-lo em um depurador. Por exemplo:

import os
import trac.web.main

os.environ['TRAC_ENV'] = '/path/to/your/trac/env'

application = trac.web.main.dispatch_request

from flup.server.fcgi import WSGIServer
server = WSGIServer(application, bindAddress=("127.0.0.1", 9000), )
server.run()

Você poderia executar este script no depurador, e você pode usar lighttpd como um frontend para a aplicação web com uma configuração trivial como esta:

server.document-root = "/path/to/your/trac/env"
server.port = 1234
server.modules = ( "mod_fastcgi" )
server.pid-file = "/path/to/your/trac/env/httpd.pid"
server.errorlog = "/path/to/your/trac/env/error.log"
fastcgi.server = ( "/" =>
  (( "host" => "127.0.0.1",
     "port" => 9000,
     "docroot" => "/",
     "check-local" => "disable",
  ))
)

Basta executar o wrapper fcgi wsgi no depurador, defina os pontos de interrupção no plugin, e abrir a página web.

Outras dicas

Geralmente, nós teste de unidade pela primeira vez.

Então, escrevemos mensagens de log para diagnosticar problemas.

Nós geralmente não dependem fortemente de depuração porque é muitas vezes difícil de fazer em situações onde scripts Python são incorporados em um produto maior.

Descobri que Winpdb é um depurador python decente.

Mas, como S. Lott aponta, depuradores não pode ser muito útil para você quando seu projeto é incorporado dentro um maior.

Trac contém bons exemplos de código Python, usando-o como um guia vai ajudar a evitar erros. Apenas certifique-se de testar seu código, e fazê-lo muitas vezes, desde que você é novo para Python ... Você vai achar que você não precisa de um depurador.

Para o teste de unidade, consulte a PyUnit .

Eu achei mais útil para adicionar esses messageboxes fantasia Trac em tempo de execução como a depuração de ajuda ou rastreamento, como esta:

from trac.web.chrome import add_notice
...
def any_function_somewhere(self, req, ...anyother args...):
    ...
    var = ...some value...
    add_notice(req, "my variable value I am tracing %s" % var)

Às vezes é mais confortável do que a leitura logging depois. Embora ele só funciona se a função que você está correndo tem que arg req.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top