【发布时间】:2018-05-17 10:56:30
【问题描述】:
在 pycharm 中,我想在调试期间中断一个什么都不做的断点。我该怎么做?
例如,我想打破pass 声明:
for i in range(999999):
if i == 6232:
pass
如果我在pass 上设置断点,调试器不会在那里中断。到目前为止,我能做的最接近的事情是组成一些未使用的变量名,并为其分配一个毫无意义的值,这样我就可以在那一行设置一个断点:
for i in range(999999):
if i == 6232:
foobar_unused_variable = "At least I can set a breakpoint on this line."
【问题讨论】:
-
我也遇到过这种情况——通常我只是放了一些 noop 语句(例如
i,它是有效的python,但什么都不做)。这具有被 pylint 拾取的额外好处,所以我不会意外提交它。 -
pass表示什么都不做,编译时决定什么都不做,所以pass处没有可执行代码,最后调试器无法调试nothing。 -
@Sraw 这似乎是错误的,因为这正是“nop”的用途,所以调试器可以调试“什么都没有”我错了吗?
-
@LazNikolajAndersen AFAIK,你错了。首先,调试器只能调试真正执行的内容,它不能在不存在的地方中断。其次,image 如果你是那个编译器的作者,你肯定会尽最大努力优化和减少冗余代码。在这种情况下,您会在目标代码中添加完全无用的代码吗?你肯定不会,因为不管它需要执行多少时间,这是一种浪费。
-
@Sraw 例如,条件断点
if <condition here>: pass很有用,如果在pass中添加break,则只有条件为真时才会执行该语句。