PDB在多线程代码中无法停在断点处

5

我正在使用多线程代码,但PDB无法在手动设置的断点上停止:

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

可能的原因是什么?

这个回答解决了你的问题吗?有没有办法附加调试器到一个多线程的Python进程中? - Jürgen Gmach
2个回答

9
截至2020年9月,Python的pdb调试器不支持多线程。尝试在与pdb启动的不同线程上中断,将跳过断点。这是由于当前实现使用了sys.settrace(),它是特定于线程的。有一个来实现这个功能以及其他多线程添加。目前,唯一的选择是在被调试的相同线程上使用pdb.set_trace()

-1

1
Web-PDB维护一个仅跟踪一个线程的调试器实例。为避免竞态条件,不应从不同的线程调用 set_trace()。每个线程都需要单独进行调试,一次只能调试一个线程。 - Bharel
2
谢谢回复。我敢肯定几年前我用过它来调试一个多线程的cli应用程序,但显然那是另一个工具。对于错误的信息,我感到抱歉! - Jürgen Gmach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接