Eclipse:内联断点
Eclipse: Inline breakpoints
有没有办法在 Eclipse 中设置内联断点(使用插件)IDE?
例如,当在同一行中调用多个方法时,有没有办法为该行中的特定方法调用设置断点,而不是为整行设置断点?
foo(bar(), baz());
^
(在这个例子中,可以在方法baz
的定义处设置一个断点,但如果它也被其他方法调用,那么如果你必须继续,它可能会很烦人大多数时候。)
如果我理解正确,Java 调试接口将允许这样做,参见 Location#codeIndex()。
foo(bar(),
baz());
最简单的方法是在 baz() 之前换行,然后像往常一样将断点放在找到 baz() 的行上。在 Java 中,以这种方式用换行符包围方法调用不会影响其评估。
screenshot from eclipse
更新:
OP 想要 select 调用 baz 并在该表达式本身的计算上设置断点,而无需在断点或编辑源代码上添加任何额外条件。
据我所知,使用 Eclipse 附带的标准调试工具是不可能的。
但是,您可以使用 conditional breakpoints 实现此效果。在 Eclipse 中,您可以像往常一样创建或 select 断点,然后访问断点视图中的条件选项。
通过菜单项Window -> 显示视图 -> 断点访问断点视图。在那里,select 或创建断点,然后检查条件选项。然后你必须描述一个适合你周围代码和需要的条件。当条件为真时,您的断点将触发。例如,通过指定调用站点行号或方法名称。
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()调用。
有没有办法在 Eclipse 中设置内联断点(使用插件)IDE?
例如,当在同一行中调用多个方法时,有没有办法为该行中的特定方法调用设置断点,而不是为整行设置断点?
foo(bar(), baz());
^
(在这个例子中,可以在方法baz
的定义处设置一个断点,但如果它也被其他方法调用,那么如果你必须继续,它可能会很烦人大多数时候。)
如果我理解正确,Java 调试接口将允许这样做,参见 Location#codeIndex()。
foo(bar(),
baz());
最简单的方法是在 baz() 之前换行,然后像往常一样将断点放在找到 baz() 的行上。在 Java 中,以这种方式用换行符包围方法调用不会影响其评估。
screenshot from eclipse
更新:
OP 想要 select 调用 baz 并在该表达式本身的计算上设置断点,而无需在断点或编辑源代码上添加任何额外条件。
据我所知,使用 Eclipse 附带的标准调试工具是不可能的。
但是,您可以使用 conditional breakpoints 实现此效果。在 Eclipse 中,您可以像往常一样创建或 select 断点,然后访问断点视图中的条件选项。
通过菜单项Window -> 显示视图 -> 断点访问断点视图。在那里,select 或创建断点,然后检查条件选项。然后你必须描述一个适合你周围代码和需要的条件。当条件为真时,您的断点将触发。例如,通过指定调用站点行号或方法名称。
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()调用。