我该如何调试Trac插件?

4 投票
5 回答
1175 浏览
提问于 2025-04-15 12:06

我即将开始大量工作,把Trac扩展到符合我们业务需求的样子。到目前为止,我使用过pythonWin,现在用的是Netbeans 6.5作为开发环境——这两个环境似乎都没有提供调试我正在开发的插件的方法。

我对Python完全是新手,所以可能没有把开发环境设置好,导致无法进行调试。

我是不是漏掉了什么明显的东西?现在我只能通过打印调试信息到Trac日志来调试,这感觉有点过时。

5 个回答

0

Trac里面有很多不错的Python代码示例,参考这些示例可以帮助你避免一些错误。记得要经常测试你的代码,特别是你刚开始学Python的时候……你会发现其实不需要调试工具。

如果你想了解单元测试,可以看看PyUnit

0

通常,我们会先进行单元测试。

然后,我们会写日志信息来帮助找出问题。

我们一般不太依赖调试,因为在一些情况下,比如Python脚本嵌入在更大的产品中时,调试往往会变得很困难。

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 作为网页应用的前端,配置非常简单,就像这样:

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 包装器,设置好你插件中的断点,然后打开网页就可以了。

撰写回答