【问题标题】:Is it possible to debug CherryPy applications?是否可以调试 CherryPy 应用程序?
【发布时间】:2011-03-09 13:00:39
【问题描述】:

我之前看到过here 发布的这个问题,但我想得到一个最终的是/否。

我一直在尝试使用 Netbeans 6.8(完全没有运气)和新发布的 Netbeans 6.9(注意到代码已被调用但未能阻止代码执行)来调试我的应用程序。

是否可以调试 CherryPy 应用程序?

【问题讨论】:

  • 我可以肯定地说这在 CPython 中是可能的(我一直都这样做)。我不知道这在 Jython 环境中是否属实(我假设您正在使用)。
  • 我已将 Netbeans 配置为使用我的标准 Python (CPython) 安装。你能提供更多关于你是如何工作的信息吗?您使用什么 IDE(如果有)?
  • 你当然可以用pdb调试CherryPy,所以如果你不能用Netbeans调试它,那是Netbeans的问题。

标签: python cherrypy


【解决方案1】:

在 Spyder 中,我设法在 CherryPy 应用程序中使用 pdb,方法是在我要检查的行之前写入 breakpoint()

这会破坏 Spyder 调试器,公开所有常规的步入/退出功能。

【讨论】:

    【解决方案2】:

    我使用wdb。它使用 websockets,看起来很棒,并且可以挂接到任何 WSGI 应用程序(如 CherryPy)中。触发时,它会在您的浏览器中打开一个新的调试选项卡。

    按照这些instructions to configure your CherryPy app,在您的代码中编写如下一行并重新启动应用程序:

    import wdb;wdb.set_trace()
    

    还应捕获应用程序中的任何异常(但不是所有在 CherryPy 中)。

    【讨论】:

      【解决方案3】:

      先是调试(逐步执行代码),然后是调试(使用实时系统)。您可以通过在您的应用中安装 http://www.aminus.net/wiki/HTTPREPL 来轻松完成后者。

      【讨论】:

      • 我一直在寻找前一个选项,但无论哪种方式,这都是一个非常有趣的链接,谢谢
      【解决方案4】:

      我在 Wing IDE (3.x) 中一直使用cherrypy 中的断点。我应该提到,当应用程序通过网络服务器托管时,我不会进行调试。我使用安装在机器上的 CPython 解释器,使用cherrypy 的内置网络服务器运行应用程序。

      代码如下所示:

      # main.py
      
      # ...snip...
      
      if __name__ == '__main__':
      
          # Handle configuration settings, calling cherrypy.tree.mount in the process
          generate_app(options.environment)
      
          # Run the web server
          engine = cherrypy.engine
          try:
              engine.start()
          except:
              sys.exit(1)
          else:
              engine.block()
      

      然后,在 Wing IDE 中,我在某处放置了一个断点(比如在我的一个控制器中),然后通过 IDE 运行 main.py。将浏览器指向控制器的 url 会触发断点。

      希望这些信息对您有所帮助。

      【讨论】:

      • 翼对我来说有点贵;我想坚持使用 Netbeans,但很高兴知道这是可能的 - 我想 Netbeans python 插件只需要先成熟一点才能赶上 Wing
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 1970-01-01
      • 2010-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多