python - pdb 不能中断另一个线程?

标签 python multithreading breakpoints pdb

考虑这个多线程程序:

import threading

class SomeThread(threading.Thread):
  def run(self):
    a = 1
    print a

def main():
  print 'hola'
  someThread = SomeThread()
  someThread.start()

if __name__ == '__main__':
  main()

当我用 pdb 调试这个程序时,在提示符下我首先在两个打印语句中的每一个设置了一个断点。然后我继续。 pdb 在 print 'hola' 处中断。我再次继续并在另一个线程中查看打印效果,但 pdb 没有中断。

帮助命令没有像 gdb 那样列出任何切换线程上下文的内容……所以……是不是不可能在一个线程上下文中设置一个会在另一个上下文中跳闸的断点?

最佳答案

这对我有用:

import threading
import pdb

class SomeThread(threading.Thread):
  def run(self):
    a = 1
    print a
    pdb.set_trace()

def main():
  print 'hola'
  pdb.set_trace()
  someThread = SomeThread()
  someThread.start()

if __name__ == '__main__':
  main()

这给了我:

C:\Code>python b.py
hola
> c:\code\b.py(13)main()
-> someThread = SomeThread()
(Pdb) l
  8         pdb.set_trace()
  9
 10     def main():
 11       print 'hola'
 12       pdb.set_trace()
 13  ->   someThread = SomeThread()
 14       someThread.start()
 15
 16     if __name__ == '__main__':
 17       main()
[EOF]
(Pdb) c
1
--Return--
> c:\code\b.py(8)run()->None
-> pdb.set_trace()
(Pdb) l
  3
  4     class SomeThread(threading.Thread):
  5       def run(self):
  6         a = 1
  7         print a
  8  ->     pdb.set_trace()
  9
 10     def main():
 11       print 'hola'
 12       pdb.set_trace()
 13       someThread = SomeThread()
(Pdb)

这是在 Windows 7 和 Python 2.7.2 下运行的。您使用的是什么操作系统和 Python 版本?

关于python - pdb 不能中断另一个线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12828956/

相关文章:

python - PyCharm - 一些断点在 Django 项目中不起作用

javascript - 没有击中 javascript 断点

Python 网络库

python - 是否有基于 DJango 的网站模板的精选存储库?

c++ - 线程中不可见的运行时错误

c# - 如何使用线程池来处理新线程中的每个连接

java - 在 Android 应用程序中非 Activity 状态下等待之前,对象未被线程锁定

ios - Xcode 异常断点总是在属性上暂停

Python - 合并来自多个线程实例的数据

python - SignatureDoesNotMatch - Boto3 Django 存储