2012-01-29 17 views
6

Obecnie używam IDE NetBeans z Jythonem 2.5.1Czy debugger Pythona wkracza w generatory?

Podczas debugowania mojego projektu krok po kroku, gdy tylko napotkana zostanie iteracja nad generatorem, debugger przechodzi prosto do końca kodu. Dane wyjściowe działają poprawnie, ale niemożliwe jest wykonanie krok po kroku debugowania po napotkaniu pierwszego generatora.

Czy jest to standardowe zachowanie dla debugowania w Pythonie we wszystkich IDE Pythona? Czy nie można debugować kodu "yield after yield" w ten sam sposób, w jaki możemy debugować VBA dla każdego elementu pętli "for" (przepraszam za wzmiankę o VBA :)?

Dzięki.

EDIT

Bez generatora

Kod:

def example(n): 
i = 1 
while i <= n: 
    yield i 
    i += 1 

print "hello" 

print "goodbye" 

wyjściowa:

hello 
goodbye 

debugowanie:

[LOG]PythonDebugger : overall Starting 
[LOG]PythonDebugger.taskStarted : I am Starting a new Debugging Session ... 
[LOG]This window is an interactive debugging context aware Python Shell 
[LOG]where you can enter python console commands while debugging 

(...) 

>>>[stdout:]hello 
>>>[stdout:]goodbye 
Debug session normal end 

z generatorem

Kod:

def example(n): 
    i = 1 
    while i <= n: 
     yield i 
     i += 1 

print "hello" 

for n in example(3): 
    print n 

print "goodbye" 

wyjściowa:

hello 
1 
2 
3 
goodbye 

debugowanie:

[LOG]PythonDebugger : overall Starting 
[LOG]PythonDebugger.taskStarted : I am Starting a new Debugging Session ... 
[LOG]This window is an interactive debugging context aware Python Shell 
[LOG]where you can enter python console commands while debugging 

(...) 

>>>[stdout:]hello 
>>>None['GeneratorExit 
deamon ended 
'] 

Debug session normal end 
+0

Zamieść swój kod. To wyjaśni twoje pytanie. – Blender

Odpowiedz

1

Właśnie przetestowałem zaćmienie i wykona debugowanie z zainstalowanym pydev.

+0

Dzięki. Właśnie go zainstalowałem i działa zgodnie z oczekiwaniami. – StackyAndHutch

+0

nie działa dla mnie z pydev. – laike9m

2

Nie używam NetBeans, ale pdb przynajmniej przejdzie przez generatory. Na przykład:

$ cat test.py 
def the_generator(): 
    for i in xrange(10): 
     yield i 

for x in the_generator(): 
    print x 

$ python -mpdb test.py 
> test.py(1)<module>() 
-> def the_generator(): 
(Pdb) n 
> test.py(5)<module>() 
-> for x in the_generator(): 
(Pdb) s 
--Call-- 
> test.py(1)the_generator() 
-> def the_generator(): 
(Pdb) n 
> test.py(2)the_generator() 
-> for i in xrange(10): 
(Pdb) n 
> test.py(3)the_generator() 
-> yield i 
(Pdb) n 
--Return-- 
> test.py(3)the_generator()->0 
-> yield i 
(Pdb) n 
> test.py(6)<module>() 
-> print x 
(Pdb) n 
0 

Jeśli napiszesz jakiś kod, możemy spróbować dowiedzieć się, co dokładnie dzieje się w Twojej sprawie.

+0

Dzięki za skierowanie mnie do PDB. Rzeczywiście potężne. Ale szukałem graficznego debuggera zintegrowanego z IDE (w przeciwieństwie do WinPDB). – StackyAndHutch

Powiązane problemy