Python PDB-如何挂起所有线程

Python PDB-如何挂起所有线程,python,multithreading,debugging,pdb,Python,Multithreading,Debugging,Pdb,当多线程Python程序遇到断点时,相关线程将停止,但其他线程将继续运行。在某些情况下,这可能是调试的障碍 例如,在test.py中: 从线程导入线程 从时间上导入睡眠 def thread1(): 尽管如此: 睡眠(1) 打印(“你好”) def thread2(): 断点() 线程(目标=thread1).start() 线程(目标=thread2).start() 将导致以下调试会话: $ python test.py --Return-- > /.../test.py(12)t

当多线程Python程序遇到断点时,相关线程将停止,但其他线程将继续运行。在某些情况下,这可能是调试的障碍

例如,在
test.py
中:

从线程导入线程
从时间上导入睡眠
def thread1():
尽管如此:
睡眠(1)
打印(“你好”)
def thread2():
断点()
线程(目标=thread1).start()
线程(目标=thread2).start()
将导致以下调试会话:

$ python test.py 
--Return--
> /.../test.py(12)thread2()->None
-> breakpoint()
(Pdb) hello
hello
hello
hello
...
如您所见,来自
thread1
print
语句正在干扰
thread2
中的调试会话

在PyCharm的调试器中,可以挂起所有线程:


是否可以挂起PDB中的所有线程?

当前不支持该功能。
pdb
调试器不适合调试多线程应用程序

  • -这是一个6年前的增强请求,支持在触发断点时停止所有线程。它没有受到太多的关注
  • -这是最近的增强请求,旨在向pdb添加更好的线程支持
  • Python Wiki中的页面列出了支持调试多线程应用程序的调试器和IDE