Вопрос

Я собираюсь начать изрядный объем работы по расширению 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 аргумент.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top