1

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

我还是想把它放在那里。所以我想,“我在该行之前放置一个空操作,并在其上设置一个断点怎么样?”

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

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

4

1 回答 1

1

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

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

并且至少在我的代码中,使用 Eclipse Scala 插件 2.1 里程碑 2,在“旧式调试模式”中跨过一个跟踪表达式,这不是一件小事——因为它完全被破坏了,由于这个问题

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

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

从理论上讲,您应该能够检查被跟踪的值,而不是试图跨过跟踪。不幸的是,这对我也不起作用——它说找不到类。

于 2012-09-28T10:47:08.300 回答