Pregunta

Estoy a punto de comenzar una buena cantidad de trabajo que se extiende Trac para adaptarse a nuestras necesidades de negocio. Hasta ahora he utilizado PythonWin y ahora NetBeans 6.5 ya que los entornos de desarrollo -. Ninguno de ellos parecen ofrecer alguna forma de depurar el plugin estoy trabajando en

Estoy totalmente nuevo para Python así que probablemente no han configurar el entorno de desarrollo de cómo se podría lograr que se congfigured depuración.

Me estoy perdiendo algo obvio? Parece un poco arcaica a tener que recurrir a la impresión de los mensajes de depuración en el registro Trac, que es la forma en que estoy de depuración en el momento.

¿Fue útil?

Solución

Puede crear una secuencia de comandos wsgi envoltorio y ejecutarlo en un depurador. Por ejemplo:

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

Se podría ejecutar esta secuencia de comandos en el depurador, y se puede usar lighttpd como interfaz para la aplicación web con una configuración trivial como éste:

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",
  ))
)

Sólo tiene que ejecutar la envoltura fcgi wsgi en el depurador, establecer los puntos de interrupción en su plugin, y abrir la página web.

Otros consejos

Por lo general, prueba de la unidad en primer lugar.

A continuación, se escribe mensajes de registro para diagnosticar problemas.

En general, no dependemos en gran medida de la depuración, ya que a menudo es difícil de hacer en situaciones en las secuencias de comandos Python están incrustados en un producto mayor.

He encontrado que Winpdb es un depurador pitón decente.

Pero, como señala S. Lott, depuradores no pueden ser muy útiles a la hora de su proyecto se inserta dentro de una más grande.

Trac contiene buenos ejemplos de código Python, usarlo como guía ayudará a evitar errores. Sólo asegúrese de probar el código, y hacerlo a menudo, ya que es nuevo en Python ... Usted encontrará que no es necesario un depurador.

En la unidad de pruebas, visita PyUnit .

Me pareció más útil para agregar esos cuadros de mensajes Trac de lujo en tiempo de ejecución como la depuración de ayuda o la localización, al igual que este:

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 veces es más cómodo que la lectura de la tala después. A pesar de que sólo funciona si la función que se está ejecutando tiene que arg req.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top