Python PDB赢得';不要在断点上停止

Python PDB赢得';不要在断点上停止,python,pdb,Python,Pdb,我对直接使用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 但是,执行直接通过断点。我是不是错过了什么命令?本手册不再详细说明如何设置断点。我通常更喜欢源代

我对直接使用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

但是,执行直接通过断点。我是不是错过了什么命令?本手册不再详细说明如何设置断点。

我通常更喜欢源代码本身中的
set\u trace()
,这样在添加/删除时开发服务器将重新加载,我不需要停止并再次启动它。例如:

def get_item(request):
   import pdb; pdb.set_trace()

当访问视图时,pdb将启动。

当我在过去看到这个问题时,通常是因为有人在一行上设置了断点,而该行实际上没有连接到正在运行的Python语句。例如,空行、注释行、多行语句的错误部分。

我也遇到过同样的问题

尝试类似于
python-mpdb./manage.pyrunserver--nothreading--noreload 127.0.0.1:8080的方法。它为我解决了这个问题


似乎带有PDB的断点是特定于线程的,并且有必要使用
--nothreading
--noreload
选项来避免一些可能会混淆PDB的分叉。这也是为什么
set\u trace
可以工作的原因,因为它直接在感兴趣的线程中调用。

我注意到一件奇怪的事情,就是当您反复按enter键时,PDB提示符会重复您以前的操作。此外,如果在程序运行时按enter键,PDB会缓冲输入,并在提示出现时应用输入。在我的例子中,我使用pdbc(continue)运行一个程序。我的程序在初始化期间向stdout写入了大量调试信息,因此我按了几次enter键,将已经写入的输出与触发断点后将要写入的输出分开。然后,当我通过一些外部操作触发断点时,PDB将在断点处停止,但随后应用一个“buffered enter”,它重复了c(continue)操作。一旦我停止按回车键,它就开始正常工作了


这听起来可能有点奇怪,我没有对这个问题进行过太多的调查,但它为我解决了问题。也许它对其他人有帮助。

我在PyTorch中编写神经网络时遇到了这个问题。与公认的答案类似,问题在于我的数据加载器剥离了多个线程。删除
num\u workers
参数允许我在单个线程上进行调试

    train_loader = DataLoader(
        train_dataset,
        batch_size=batch_size,
        num_workers=16, # <-------Remove this argument
        pin_memory=True
    )
列车装载机=数据装载机(
列车运行数据集,
批次大小=批次大小,

num_workers=16,#没有例外。代码的执行就像没有安装调试器一样。您可以发布一小段代码来演示这个问题,而不仅仅是错误消息吗?这个替代方案的问题是它污染了源代码猜测这是一个意见问题。无论如何,它只是在调试期间,当然这是错误的调试会话结束后,语句将被删除(另外,如果源代码案例已编辑,则不需要记住在何处中断或更新命令行).当然,但有一个很好的例子,我相信这句话会被忘记。我只想通过pdb设置一个简单的断点。这应该不会这么难,而且应该有更多的工具文档…好吧,我的问题似乎比我想象的更大。我尝试了你的替代方案,再次调试程序没有停止。只是为了确定,这是我的问题这就是我如何调用Django应用程序的调试器,对吗?python-m pdb manage.py runserverI已成功使pdb在set_trace上停止(由于某些原因,代码在编辑后没有自动重新加载)。不幸的是,我仍然没有成功地使pdb在使用b命令创建的制动点上停止。关于如何在其他模式下(特别是测试)执行此操作,有什么想法吗?--无阅读似乎仅限于runserver。