1

有没有办法在 Eclipse IDE 中设置内联断点(使用插件)?

例如,当在同一行中调用多个方法时,有没有办法为该行中的特定方法调用设置断点,而不是为整个行设置断点?

foo(bar(), baz());
           ^

(在这个例子中,可以在方法的定义处设置断点baz,但如果它也被其他方法调用,那么如果你大部分时间都必须继续,那可能会很烦人。)

如果我理解正确,Java 调试接口将允许这样做,请参阅Location#codeIndex()

4

1 回答 1

1
foo(bar(), 
    baz());

最简单的方法是在 baz() 之前进行换行并将断点正常放置在 baz() 所在的行上。在 Java 中,以这种方式用换行符包围方法调用不会影响其评估。

日食的截图

更新:

OP 希望选择 baz 的调用并在该表达式本身的评估上设置一个断点,而不需要对断点或源代码的编辑有任何额外的条件。

据我所知,使用 Eclipse 附带的标准调试工具是不可能的。

但是,您可以使用条件断点来实现此效果。在 Eclipse 中,您可以正常创建或选择断点,然后访问 Breakpoints View 中的条件选项。

通过菜单项 Window -> Show View -> Breakpoints 访问 Breakpoint View。在那里,选择或创建断点,然后检查条件选项。然后,您必须描述一个适合您周围代码和需求的条件。当条件为真时,您的断点将触发。例如,通过指定调用站点行号或方法名称。

Eclipse 中的断点视图,启用了条件

我的答案基于这个 SO answer

在我自己的示例代码中,我有以下设置:

a(){
  baz(); 
  m();
}

m(){
  foo(bar(), baz());
}

我的断点位于 baz() 中。添加条件语句

Thread.currentThread().getStackTrace()[2].getMethodName().equals("m")

到我的断点意味着它仅在从 m() 调用 baz() 时触发,而不是从 a() 调用。

于 2018-11-01T19:46:08.197 回答