作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在调试一个导致异常的 Django 项目。我想进入 ipdb
事后调试器。我试过将 ipdb
作为脚本调用(参见 https://docs.python.org/3/library/pdb.html ),但这只是让我进入了第一行代码:
> python -m ipdb manage.py runserver
> /Users/kurtpeek/myproject/manage.py(2)<module>()
1 #!/usr/bin/env python
----> 2 import os
3 import sys
ipdb>
如果我按 c
以继续
,我只会遇到错误,不可能进入调试器事后分析。大概我可以按 n
(next
) 直到出现错误,但这会很麻烦。
有没有办法通过事后调试运行 python manage.py runserver
?
最佳答案
如果您知道导致异常的行,但不知道导致异常的内部有多“深”,您可以通过捕获异常并调用 ipdb 来获得事后调试器.post_mortem()
在异常处理程序中。
例如,将您的代码更改为:
def index(request):
output = function_that_causes_some_exception()
return HttpResponse(output)
对此:
def index(request):
try:
output = function_that_causes_some_exception()
except:
import ipdb
ipdb.post_mortem()
# Let the framework handle the exception as usual:
raise
return HttpResponse(output)
顺便说一句,对于可能从其他线程在控制台中喷出内容的服务器框架,我强烈推荐 wdb
,这样您就可以在浏览器中舒适地调试您的 Django 应用程序:
def index(request):
try:
output = function_that_causes_some_exception()
except:
import wdb
wdb.post_mortem()
# Let the framework handle the exception as usual:
raise
return HttpResponse(output)
关于python - 如何在 Django 的运行服务器中进行事后调试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57227938/
我是一名优秀的程序员,十分优秀!