我正在编写Python Bottle应用程序(Python 2.7.2和Bottle 0.10.9)并在WingIDE(3.2.8-1)Professional for Linux中进行开发。这一切都很好,除非我想调试Bottle应用程序。我让它在WingIDE中以独立模式运行,但它不会停留在我的代码中的任何断点,即使我设置了Bottle.debug(False)。有没有人对我如何设置瓶子有任何建议/想法,所以它会在WingIDE内的断点处停止?
答案 0 :(得分:4)
如果将重新加载器设置为true,则启动实际应用程序的子过程。在Wing你需要关闭重新加载器,然后它应该工作。
run(reloader=False).
但每次进行更改时,您都必须重新启动应用程序。
答案 1 :(得分:3)
您是使用wingdbstub.py在WSGI下调试还是从IDE启动瓶子?我对瓶子并不熟悉,但常见的问题是Web框架的重载机制在未经调试的子流程中运行代码。我不确定瓶子是否会在WSGI下执行此操作,但是在导入wingdbstub时打印进程ID(或者如果从IDE启动则打印)并且再次在断点错过的行处打印将在我们的输出中对此进行排序。 Bottle .__ init__的“重新加载器”arg可能与此相关。如果设置为True,请尝试在Wing下进行调试时将其设置为False。
要尝试的另一件事是故意提出断点的例外(如“断言0,'测试异常'”,看看是否在例外工具的Wing的调试器中报告了这个异常,如果是的话,Wing是否也管理打开源代码。如果瓶子以不能找到源代码的方式运行代码,那么这仍然会停止在断言上(Wing的调试器默认停止在所有断言上即使主机代码处理异常)但它将无法显示调试文件,并且会在状态区域(在IDE屏幕和消息工具中)显示一条消息,指示调试过程指定的文件名。根据这一点,可以解决问题(但如果文件名是“”,则需要修改Bottle。
BTW,要插入只在Wing的调试器下运行的代码,我们就像这样:
导入操作系统 如果os.environ中的'WINGDB_ACTIVE': #code here
如果这没有帮助,请发送电子邮件至wingware dot com。