如何在我的龙卷风应用程序中设置断点?
我尝试了 pdb,但 Tornado 应用程序接缝忽略了我的应用程序中的 pdb.set_trace() 命令。
问问题
1946 次
2 回答
2
你把pdb.set_trace()
……放在哪里了?这对我有用:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
import pdb
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
greeting = self.get_argument('greeting', 'Hello')
reself.write(greeting + ', friendly user!')
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
pdb.set_trace()
tornado.ioloop.IOLoop.instance().start()
会议:
$ python test.py
> /home/mariusz/Dokumenty/Projekty/Testy/test.py(24)<module>()
-> tornado.ioloop.IOLoop.instance().start()
(Pdb) break 16
Breakpoint 1 at /home/mariusz/Dokumenty/Projekty/Testy/test.py:16
(Pdb) continue
> /home/mariusz/Dokumenty/Projekty/Testy/test.py(16)get()
-> self.write(greeting + ', friendly user!')
(Pdb) step
--Call--
> /usr/local/lib/python2.7/dist-packages/tornado/web.py(497)write()
-> def write(self, chunk):
(Pdb) step
> /usr/local/lib/python2.7/dist-packages/tornado/web.py(512)write()
-> if self._finished:
(Pdb) step
> /usr/local/lib/python2.7/dist-packages/tornado/web.py(516)write()
-> if isinstance(chunk, dict):
(Pdb)
放入continue
上述代码后,调试器停止,因为我必须http://localhost:8000/
在浏览器中轮询才能RequestHandler
实际调用函数。
于 2013-06-11T00:50:04.470 回答
2
如果您使用工头运行您的应用程序,您将在根项目文件夹的 .env 文件中设置环境变量。在我的 .env 文件中设置下面的 env 变量对我来说很重要。
PYTHONUNBUFFERED=true
现在我可以在我的应用程序中设置代码断点,并在使用工头运行应用程序时将输出打印到服务器日志。
于 2013-12-12T21:51:38.793 回答