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 包装器,在插件中设置断点,然后打开网页。

于 2009-06-08T13:33:59.417 回答
0

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

然后,我们编写日志消息来诊断问题。

我们通常不会严重依赖调试,因为在 Python 脚本嵌入到更大的产品中的情况下通常很难做到。

于 2009-06-08T10:11:12.260 回答
0

我发现Winpdb是一个不错的 python 调试器。

但正如 S.Lott 指出的那样,当您的项目嵌入到一个较大的项目中时,调试器可能对您不是很有用。

于 2009-06-08T11:56:45.883 回答
0

Trac 包含很好的 Python 代码示例,将其用作指南将有助于避免错误。只要确保测试您的代码,并且经常这样做,因为您是 Python 新手……您会发现您不需要调试器。

对于单元测试,请查看PyUnit

于 2009-06-08T12:05:02.000 回答
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 回答