【问题标题】:PDB doesn't stop on breakpoint in multithreaded codePDB 不会在多线程代码中的断点处停止
【发布时间】:2020-09-06 17:52:06
【问题描述】:

我正在使用多线程代码,并且 PDB 不会在手动设置断点时停止:

(pdb) b filename:lineno
(pdb) c  # Runs without stopping

可能是什么原因?

【问题讨论】:

标签: python debugging pdb


【解决方案1】:

截至 2020 年 9 月,Python 的 pdb 调试器不支持多线程。

尝试在与 pdb 启动位置不同的线程上中断,将跳过断点。这是由于当前使用sys.settrace() 的实现是线程特定的。

有一个ticket 用于在其他多线程添加中实现此功能。

目前,唯一的选择是在被调试的同一线程上pdb.set_trace()

【讨论】:

    【解决方案2】:

    而不是 pdb 使用例如web-pdb.

    https://pypi.org/project/web-pdb/

    【讨论】:

    • "Web-PDB 维护一个调试器实例,只跟踪一个线程。您不应从不同线程调用 set_trace() 以避免竞争条件。每个线程需要一次单独调试一个。"
    • 感谢您的回复。我可以发誓几年前我用它来调试一个多线程 cli 应用程序,但显然它是一个不同的应用程序。抱歉信息有误!
    猜你喜欢
    • 2012-08-24
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 2017-07-05
    • 1970-01-01
    • 2019-11-01
    • 2020-08-11
    相关资源
    最近更新 更多