Как я должен отлаживать плагины Trac? - PullRequest
4 голосов
/ 08 июня 2009

Я собираюсь начать изрядное количество работ по расширению Trac, чтобы соответствовать требованиям нашего бизнеса. До сих пор я использовал pythonWin, а теперь Netbeans 6.5 в качестве среды разработки - ни один из них, похоже, не предоставляет какого-либо способа отладки плагина, над которым я работаю.

Я совершенно новичок в Python , поэтому, вероятно, я не настроил среду разработки так, как ее можно настроить для отладки.

Я что-то упускаю из виду? Кажется немного архаичным, что приходится прибегать к печати отладочных сообщений в журнал Trac, как я сейчас отлаживаю.

Ответы [ 5 ]

2 голосов
/ 08 июня 2009

Вы можете создать скрипт wsgi-обёртки и запустить его в отладчике. Например:

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

Вы бы запустили этот скрипт в отладчике, и вы можете использовать lighttpd в качестве интерфейса для веб-приложения с такой простой конфигурацией, как эта:

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

Просто запустите оболочку fcgi wsgi в отладчике, установите точки останова в вашем плагине и откройте веб-страницу.

0 голосов
/ 10 июня 2013

Мне показалось, что было бы наиболее полезно добавить эти причудливые почтовые ящики Trac во время выполнения в качестве справки по отладке или трассировки, вот так:

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)

Иногда это удобнее, чем читать журналы потом. Хотя это работает только в том случае, если у выполняемой вами функции есть req arg.

0 голосов
/ 08 июня 2009

Я обнаружил, что Winpdb - приличный отладчик Python.

Но, как указывает С.Лотт, отладчики могут быть не очень полезны для вас, когда ваш проект встроен в более крупный проект.

0 голосов
/ 08 июня 2009

Trac содержит хорошие примеры кода Python, использование которого в качестве руководства поможет избежать ошибок. Обязательно проверяйте свой код и делайте это часто, поскольку вы новичок в Python ... Вы обнаружите, что вам не нужен отладчик.

Для модульного тестирования, проверьте PyUnit .

0 голосов
/ 08 июня 2009

Обычно мы сначала тестируем модуль.

Затем мы пишем сообщения журнала для диагностики проблем.

Как правило, мы не сильно зависим от отладки, потому что это часто трудно сделать в ситуациях, когда скрипты Python встроены в более крупный продукт.

...