2012-10-10 14 views
7

bu çok kanallı bir program düşünün: İlk iki baskı tabloların her birinde bir kırılma noktasını ayarlamak isteminde pdb başka bir iş parçacığında kırılamıyor?

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() 

Ben pdb ile bu programı hata ayıklama

. Sonra devam ediyorum. pdb, print 'hola''da kopar. Tekrar devam ediyorum ve baskının diğer iş parçasındaki etkisini görüyorum ama pdb kırmıyor.

Yardım komutları gdb gibi iş parçacığı bağlamlarını değiştirmek için hiçbir şey listelemez ... bu yüzden başka bir bağlamda yolculuk yapacak bir kesme noktası ayarlamak için tek bir iş parçacığı bağlamında mümkün değil mi?

cevap

5

Bu benim için çalışıyor:

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() 

bana verir Hangi:

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) 

Bu Windows 7 altında ve Python 2.7.2 beraberdir. Hangi OS & Python sürümünü kullanıyorsunuz? Eğer ilk kesme isabet sonra

0

, sana olan artırıyor varsayalım bu çizgiye aldığımda (n) bir sonraki satırı

someThread.start() 

(sen (ler) adım-into kullanarak ve olmadığından emin olun n) sonraki. pdb commands