gpt4 book ai didi

java - Eclipse:内联断点

转载 作者:行者123 更新时间:2023-11-30 05:56:18 24 4
gpt4 key购买 nike

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

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

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

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

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

最佳答案

foo(bar(), 
baz());

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

screenshot from eclipse

更新:

OP 希望选择 baz 的调用,并在该表达式本身的计算上设置断点,而无需在断点或源代码编辑上设置任何额外条件。

据我所知,Eclipse 附带的标准调试工具不可能做到这一点。

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

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

Breakpoints View in Eclipse, with conditionals enabled

我的答案基于this SO answer

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

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

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

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

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

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

关于java - Eclipse:内联断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53103795/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com