4

私は、ビジネス要件に合うようにTracを拡張するかなりの量の作業を開始しようとしています。これまで、開発環境としてpythonWinとNetbeans 6.5を使用してきましたが、どちらも、作業中のプラグインをデバッグする方法を提供していないようです。

私はPythonにまったく慣れていないので、デバッグを行うためにどのように構成できるかを開発環境に設定していない可能性があります。

明らかな何かが欠けていますか?デバッグメッセージをTracログに出力することに頼らなければならないのは少し古風なようです。これが、現在私がデバッグしている方法です。

4

5 に答える 5

2

ラッパー 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 を Web アプリケーションのフロントエンドとして、次のような単純な構成で使用できます。

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 ラッパーを実行し、プラグインにブレークポイントを設定して、Web ページを開くだけです。

于 2009-06-08T13:33:59.417 に答える
0

TracにはPythonコードの良い例が含まれています。これをガイドラインとして使用すると、バグを回避するのに役立ちます。必ずコードをテストしてください。Pythonを初めて使用するため、頻繁にテストしてください...デバッガーは必要ありません。

ユニットテストについては、 PyUnitをチェックしてください。

于 2009-06-08T12:05:02.000 に答える
0

通常、最初に単体テストを行います。

次に、問題を診断するためにログ メッセージを書き込みます。

Python スクリプトが大規模な製品に組み込まれている状況ではデバッグが難しいことが多いため、通常、デバッグに大きく依存することはありません。

于 2009-06-08T10:11:12.260 に答える
0

次のように、これらの凝った 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実行している関数にその引数がある場合にのみ機能しますが。

于 2013-06-10T12:46:40.087 に答える
0

Winpdbはまともな Python デバッガーである ことがわかりました。

しかし、S.Lott が指摘するように、プロジェクトが大きなプロジェクトに組み込まれている場合、デバッガはあまり役に立ちません。

于 2009-06-08T11:56:45.883 に答える