2009-06-08 56 views
4

我即將開始大量工作來擴展Trac以適應我們的業務需求。 到目前爲止,我已經使用pythonWin和現在的Netbeans 6.5作爲開發環境 - 它們都不能提供任何方式來調試我正在使用的插件。我該如何調試Trac插件?

我完全是Python的新手所以可能還沒有設置開發環境如何配置它來調試。

我錯過了一些明顯的東西嗎?這似乎有點過時,不得不求助於打印調試消息到Trac日誌,這是我目前正在調試的方式。

回答

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包裝器,在插件中設置斷點,然後打開網頁。

0

通常,我們先進行單元測試。

然後,我們寫日誌消息來診斷問題。

我們通常不會嚴重依賴調試,因爲在Python腳本嵌入到更大的產品中時,通常很難做到這一點。

0

我發現Winpdb是一個體面的python調試器。

但正如S.Lott指出的那樣,當您的項目嵌入到較大的項目中時,調試器對您來說可能不是很有用。

0

Trac包含很好的Python代碼示例,將它用作指導將有助於避免錯誤。只要確定測試了你的代碼,並且經常這樣做,因爲你是Python新手......你會發現你不需要調試器。

對於單元測試,請查看PyUnit

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 arg。