考虑这个多线程程序:
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 ......所以......在一个线程上下文中是否不可能设置一个会在另一个上下文中跳转的断点?
答案 0 :(得分:4)
这对我有用:
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版本吗?
答案 1 :(得分:-2)