Domanda

sto per iniziare una discreta quantità di lavoro che si estende Trac per soddisfare le nostre esigenze di business. Finora ho usato PythonWin e ora NetBeans 6.5, come gli ambienti di sviluppo -. Nessuna di queste sembra fornire alcun modo di debug del plugin sto lavorando su

Sono totalmente nuovo a Python , quindi probabilmente non è stato impostato l'ambiente di sviluppo come potrebbe essere congfigured per farlo debug.

Mi sto perdendo qualcosa di ovvio? Sembra un po 'arcaica di dover ricorrere alla stampa i messaggi di debug al log Trac, che è come sto debug in questo momento.

È stato utile?

Soluzione

È possibile creare uno script WSGI involucro ed eseguirlo in un debugger. Ad esempio:

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()

Si potrebbe eseguire questo script nel debugger, ed è possibile utilizzare lighttpd come frontend per l'applicazione web con un config banale come questo:

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 eseguire l'involucro fcgi WSGI nel debugger, impostare i punti di interruzione nel vostro plugin, e aprire la pagina web.

Altri suggerimenti

Di solito, unit test per prima.

Quindi, scriviamo messaggi di log per diagnosticare i problemi.

In genere non dipendono pesantemente il debug perché è spesso difficile da fare in situazioni in cui gli script Python sono incorporati in un prodotto più grande.

Ho trovato che Winpdb è un debugger Python decente.

Ma, come sottolinea S. Lott, debugger non può essere molto utile a voi quando il progetto è inserito all'interno di uno più grande.

Trac contiene buoni esempi di codice Python, usandolo come una linea guida vi aiuterà a evitare errori. Basta essere sicuri di testare il codice, e lo fa spesso da quando sei un nuovo Python ... Troverete non hai bisogno di un debugger.

Per unit test, controllare PyUnit .

L'ho trovato più utile per aggiungere quei messageboxes Trac fantasia in fase di esecuzione come il debug aiuto o il rintracciamento, proprio come questo:

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)

A volte è più comodo di leggere la registrazione in seguito. Anche se funziona solo se la funzione che si sta eseguendo ha quel arg req.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top