Как я должен отлаживать плагины Trac?
-
12-09-2019 - |
Вопрос
Я собираюсь начать изрядный объем работы по расширению Trac в соответствии с требованиями нашего бизнеса.До сих пор я использовал PythonWin, а теперь Netbeans 6.5 в качестве сред разработки - ни одна из них, похоже, не предоставляет никакого способа отладки плагина, над которым я работаю.
Я совершенно новичок в Python так что, вероятно, вы не настроили среду разработки так, как ее можно было бы настроить для ее отладки.
Я упускаю что-то очевидное?Кажется немного архаичным прибегать к печати отладочных сообщений в журнал отслеживания, что я и делаю в данный момент.
Решение
Вы можете создать сценарий 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 в отладчике, установите точки останова в вашем плагине и откройте веб-страницу.
Другие советы
Обычно сначала мы проводим модульное тестирование.
Затем мы записываем сообщения журнала для диагностики проблем.
Обычно мы не сильно зависим от отладки, потому что это часто трудно сделать в ситуациях, когда скрипты Python встроены в более крупный продукт.
Я обнаружил, что Winpdb это приличный отладчик python.
Но, как указывает С. Лотт, отладчики могут быть не очень полезны для вас, когда ваш проект встроен в более крупный.
Trac содержит хорошие примеры кода на Python, использование его в качестве руководства поможет избежать ошибок.Просто обязательно тестируйте свой код, и делайте это часто, поскольку вы новичок в Python...Вы обнаружите, что вам не нужен отладчик.
Для модульного тестирования ознакомьтесь с ПьЮнит.
Я счел наиболее полезным добавить эти необычные ящики сообщений 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
аргумент.