Eclipse Scala无op保证不会被优化?

Eclipse Scala无op保证不会被优化?,eclipse,scala,scalac,noop,Eclipse,Scala,Scalac,Noop,您可以在Scala方法的关闭}上设置断点,但这样做毫无意义,因为它显然不会被命中 我还是想把它放在那里。所以我想,“我在那行之前加一个no-op,然后在上面设置一个断点怎么样?” 但显然,当我试图设置一个永远不会被命中的断点时,Eclipse并没有警告我(因为那里没有代码),因此我不能依赖Eclipse告诉我no op是否已经优化(特别是因为我甚至没有使用与EclipseScala插件使用的相同版本的Scala来运行代码) 那么,我可以在这里使用一个简短的无操作语句或表达式,它保证在任何情况下都

您可以在Scala方法的关闭
}
上设置断点,但这样做毫无意义,因为它显然不会被命中

我还是想把它放在那里。所以我想,“我在那行之前加一个no-op,然后在上面设置一个断点怎么样?”

但显然,当我试图设置一个永远不会被命中的断点时,Eclipse并没有警告我(因为那里没有代码),因此我不能依赖Eclipse告诉我no op是否已经优化(特别是因为我甚至没有使用与EclipseScala插件使用的相同版本的Scala来运行代码)


那么,我可以在这里使用一个简短的无操作语句或表达式,它保证在任何情况下都不会被Scala编译器优化,并且保证不会被JIT优化,以防止命中断点?在我的例子中,我想它必须是一个表达式而不是一个语句,因为这个方法返回一个有用的值,而不是
单位

,它不是一个完全的无操作,但是一个日志语句(或跟踪表达式-即一个额外返回它刚刚记录的值的日志语句)保证不会被优化掉

唯一的问题是,如果您想查看调试语句或跟踪表达式的实际输出,则必须在每次到达断点时手动跳过调试语句或跟踪表达式。除非它只是输出一个变量的值,在这种情况下,您可以在Eclipse的Variables选项卡中找到该变量

在“旧式调试模式”下,使用EclipseScala插件2.1 milestone 2跳过跟踪表达式(至少在我的代码中是这样)并不是一件小事——因为它完全被破坏了,因为

在我意识到发生了什么之前,我花了大约20次尝试敲击F6和F7键,最后才成功跨过它!那只是为了跨过它一次

请记住,下一行是
}
-因此,显而易见的解决方法,即在下一行设置另一个断点-将不起作用


从理论上讲,你应该能够,而不是试图跨过痕迹。不幸的是,这对我也不起作用-它说找不到类。

这不完全是一个no op,但是一个日志语句(或跟踪表达式-即一个额外返回它刚刚记录的值的日志语句)保证不会被优化掉

唯一的问题是,如果您想查看调试语句或跟踪表达式的实际输出,则必须在每次到达断点时手动跳过调试语句或跟踪表达式。除非它只是输出一个变量的值,在这种情况下,您可以在Eclipse的Variables选项卡中找到该变量

在“旧式调试模式”下,使用EclipseScala插件2.1 milestone 2跳过跟踪表达式(至少在我的代码中是这样)并不是一件小事——因为它完全被破坏了,因为

在我意识到发生了什么之前,我花了大约20次尝试敲击F6和F7键,最后才成功跨过它!那只是为了跨过它一次

请记住,下一行是
}
-因此,显而易见的解决方法,即在下一行设置另一个断点-将不起作用

从理论上讲,你应该能够,而不是试图跨过痕迹。不幸的是,这对我也不起作用——它说找不到类