2012-01-29 46 views
6

我目前正在使用NetBeans IDE和Jython 2.5.1Python調試器是否在發生器中步進?

當一步步調試我的項目時,只要遇到對生成器的迭代,調試器就會直接到代碼的末尾。輸出工作正常,但一旦滿足第一個生成器就不可能一步一步地進行調試。

這是在所有Python IDE中進行Python調試的標準行爲嗎? 是不是可以調試代碼「yield yield之後」,就像我們可以爲「for」循環的每個元素調試VBA一樣(對於提及VBA,抱歉:)?

謝謝。

編輯

沒有產生

代碼:

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

print "hello" 

print "goodbye" 

輸出:

hello 
goodbye 

調試:

[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 

與發電機

代碼:

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

print "hello" 

for n in example(3): 
    print n 

print "goodbye" 

輸出:

hello 
1 
2 
3 
goodbye 

調試:

[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

發佈您的代碼。它會澄清你的問題。 – Blender 2012-01-29 05:28:55

回答

1

我剛剛測試過eclipse,它會用pydev安裝進行調試。

+0

謝謝。剛剛安裝它,它的行爲如預期。 – StackyAndHutch 2012-02-02 15:22:25

+0

不適用於pydev。 – laike9m 2013-10-20 05:34:27

2

我不使用NetBeans,但pdb至少確實通過了生成器。例如:

$ 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 

如果您發佈了一些代碼,我們可以嘗試弄清楚您的情況到底發生了什麼。

+0

謝謝你指點我PDB。的確有力。但我正在尋找集成到IDE中的圖形化調試器(與WinPDB不同)。 – StackyAndHutch 2012-02-02 15:23:18