gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 17:20:51 25 4
gpt4 key购买 nike

考虑这个多线程程序:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com