代码之家  ›  专栏  ›  技术社区  ›  Chris B

我应该如何调试trac插件?

  •  4
  • Chris B  · 技术社区  · 15 年前

    我将开始大量工作来扩展TRAC以满足我们的业务需求。 到目前为止,我已经使用了pythonwin和现在的netbeans 6.5作为开发环境——这两种环境都没有提供任何调试我正在开发的插件的方法。

    我对巨蟒完全陌生 所以可能还没有设置开发环境,如何配置它来进行调试。

    我是否遗漏了一些明显的东西?必须将调试消息打印到trac日志中似乎有点过时,这就是我目前调试的方式。

    5 回复  |  直到 11 年前
        1
  •  2
  •   abbot    15 年前

    您可以创建一个包装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包装器,在插件中设置断点,然后打开网页。

        2
  •  0
  •   S.Lott    15 年前

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

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

    我们通常不太依赖调试,因为在大型产品中嵌入了Python脚本的情况下,通常很难进行调试。

        3
  •  0
  •   tgray    15 年前

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

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

        4
  •  0
  •   Jason Coon    15 年前

    trac包含了很好的python代码示例,将其作为指南将有助于避免错误。一定要测试你的代码,并且经常这样做,因为你对Python不熟悉……你会发现你不需要调试程序。

    对于单元测试,请检查 PyUnit .

        5
  •  0
  •   falkb    11 年前

    我发现在运行时添加那些花哨的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 精氨酸