是否可以在Eclipse IDE中设置内联断点(带有插件)?
例如,在同一行中调用多个方法时,是否可以为该行中的特定方法调用而不是整个行设置断点?
foo(bar(), baz());
^
(在此示例中,可以在方法baz
的定义中设置一个断点,但是如果也由其他方法调用该断点,则如果必须继续执行大多数操作,可能会很烦人。时间。)
如果我正确理解它,则Java调试接口将允许这样做,请参见Location#codeIndex()。
答案 0 :(得分:1)
foo(bar(),
baz());
最简单的方法是在baz()之前进行换行,并将断点照常放置在找到的baz()上。在Java中,以这种方式用换行符包围方法调用不会影响其评估。
OP希望选择baz的调用并在对该表达式本身的求值上创建一个断点,而无需在断点或源代码的编辑上附加任何条件。
据我所知,Eclipse附带的标准调试工具无法实现。
但是,您可以使用conditional breakpoints来达到此效果。在Eclipse中,您可以正常创建或选择一个断点,然后在“断点”视图中访问条件选项。
通过菜单项“窗口”->“显示视图”->“断点”访问断点视图。到达那里后,选择或创建您的断点,然后检查条件选项。然后,您必须描述一个适合您周围代码和需求的条件。条件为真时,将触发您的断点。例如,通过指定呼叫站点的电话号码或方法名称。
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()调用时触发。