我是直接使用pdb进行调试的新手,我在调试Django应用程序时遇到了一些问题.这是我正在做的事情:
python -m pdb manage.py runserver
(pdb) b core/views.py:22
Breakpoint 2 at /Users/raphaelcruzeiro/Documents/Projects/pdb_test/core/views.py:22
(Pdb) c
Run Code Online (Sandbox Code Playgroud)
但是,执行直接通过断点.我错过了一些命令吗?本手册不再详述设置断点了.
Gus*_*ira 17
我遇到了同样的问题.
尝试类似的东西python -m pdb ./manage.py runserver --nothreading --noreload 127.0.0.1:8080.它为我解决了这个问题.
似乎PDB的断点是线程特定的,--nothreading并且--noreload选项和选项是必要的,以避免一些可能混淆PDB的分叉.这也是为什么set_trace有效,因为它直接在感兴趣的线程中调用.
我通常更喜欢set_trace()源代码本身,这样开发服务器在添加/删除时会重新加载,我不需要再次停止并重新启动它.例如:
def get_item(request):
import pdb; pdb.set_trace()
Run Code Online (Sandbox Code Playgroud)
访问视图时,pdb将启动.