Question

Je suis sur le point de commencer une bonne quantité de travail allant Trac pour répondre à nos besoins. Jusqu'à présent, je l'ai utilisé PythonWin et NetBeans maintenant 6.5 comme les environnements de développement -. Aucun de ceux-ci semblent fournir un moyen de débogage du plugin je travaille sur

Je suis totalement nouveau pour Python si probablement pas mis en place l'environnement de développement comment il pourrait être congfigured pour l'obtenir le débogage.

Suis-je manque quelque chose d'évident? Il semble un peu archaïque d'avoir recours à l'impression des messages de débogage dans le journal Trac, qui est la façon dont je suis le débogage au moment.

Était-ce utile?

La solution

Vous pouvez créer un script wsgi d'emballage et l'exécuter dans un débogueur. Par exemple:

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

Vous exécutez ce script dans le débogueur, et vous pouvez utiliser lighttpd comme frontend pour l'application Web avec une config trivial comme celui-ci:

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

Il suffit de lancer l'emballage wsgi fcgi dans le débogueur, définissez les points d'arrêt dans votre plugin, et ouvrez la page Web.

Autres conseils

En général, nous testons l'unité première.

Ensuite, nous écrivons les messages du journal pour diagnostiquer les problèmes.

Nous ne dépendons pas généralement beaucoup sur le débogage, car il est souvent difficile de faire dans des situations où des scripts Python sont intégrés dans un produit plus grand.

J'ai trouvé que Winpdb est un débogueur de python décent.

Mais comme S. Lott souligne, débogueurs peuvent ne pas être très utile pour vous lorsque votre projet est intégré dans un plus grand.

Trac contient de bons exemples de code Python, en l'utilisant comme guide permettra d'éviter les bugs. Assurez-vous de tester votre code, et de le faire souvent depuis que vous êtes nouveau Python ... Vous vous trouvez ne pas besoin d'un débogueur.

Pour les tests unitaires, consultez PyUnit .

Je l'ai trouvé plus utile d'ajouter ces MessageBoxes fantaisie Trac lors de l'exécution comme le débogage de l'aide ou le traçage, comme ceci:

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)

Parfois, il est plus confortable que la lecture après l'enregistrement. Bien que cela ne fonctionne que si la fonction que vous utilisez a cette req arg.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top