- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我目前正在使用 NetBeans IDE 和 Jython 2.5.1
在逐步调试我的项目时,只要遇到对生成器的迭代,调试器就会直接到代码末尾。输出正常,但是一旦遇到第一个生成器就无法一步步调试了。
这是所有 Python IDE 中 Python 调试的标准行为吗?难道不能像调试“for”循环的每个元素的 VBA 一样调试代码“yield after yield”(抱歉提到 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
最佳答案
我不使用 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
如果您发布一些代码,我们可以尝试弄清楚您的情况到底发生了什么。
关于python - Python 调试器会介入生成器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9051118/
仅使用数据表 使用bootstrap之后 所以我不得不恢复以前的 css。我还需要 bootstrap,因为还有其他依赖于它的 css,但 bootstrap 还更改了数据表的 CSS
我目前正在使用 Visual Studio 2019,当我使用调试方法 Step In (F11) 时,它会将命令提示符优先于实际的 Visual Studio 2019 程序。我如何更改它,以便它让
我收到这个错误: Line 246: Line 247: Line 248: Line 249: Lin
我有一个 MVC5 项目,它分为一个主 XXXX.Site 和一个 XXXX.Data dll,它具有连接到 MS-SQL 2014 数据库的 EF6。 当我在 MVC Controller 上并在
我是一名优秀的程序员,十分优秀!