gpt4 book ai didi

python - 如何在 Django 的运行服务器中进行事后调试?

转载 作者:行者123 更新时间:2023-12-05 07:20:56 25 4
gpt4 key购买 nike

我目前正在调试一个导致异常的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com