Java 在stacktrace中存在类时在断点上停止
当stacktrace中存在特定类时,Intellij中是否有方法创建条件断点?或者,当在此stacktrace中传递特定断点时 举例如下: 假设我们有一些实用方法Utils.doSomething,我只想在从SomeClass.doSomething执行此方法时停止 我知道有“禁用直到断点被命中”,但这会使代码在满足初始条件后被命中时停止执行 例如:Java 在stacktrace中存在类时在断点上停止,java,debugging,intellij-idea,Java,Debugging,Intellij Idea,当stacktrace中存在特定类时,Intellij中是否有方法创建条件断点?或者,当在此stacktrace中传递特定断点时 举例如下: 假设我们有一些实用方法Utils.doSomething,我只想在从SomeClass.doSomething执行此方法时停止 我知道有“禁用直到断点被命中”,但这会使代码在满足初始条件后被命中时停止执行 例如: class SomeClass { void doSomething() { int y = 1; // Breakpo
class SomeClass {
void doSomething() {
int y = 1; // Breakpoint here
Utils.doSomething();
Utils.doSomething();
}
void doSomethingElse() {
Utils.doSomething();
}
}
static class Utils {
static void doSomething() {
int x = 1; // Breakpoint with condition here
}
}
@Test
public void test() {
SomeClass someInstance = new SomeClass();
someInstance.doSomething();
someInstance.doSomethingElse();
someInstance.doSomething();
}
int y=1上的断点
条件为int x=1的断点
首先从SomeClass.doSomething执行时,它在Utils.doSomething中停止,但在下一行再次执行Utils.doSomething时,它不会停止
当通过某个类执行时,它不会正确地停止。doSomethingElse我想您要查找的是: 要设置当前断点所依赖的断点,请从 在选定断点命中下拉列表之前禁用。一次依赖 已设置,则当前断点将被禁用,直到选中一个断点为止 击中 选择“再次禁用”单选按钮以禁用当前设置 命中选定断点后的断点 选择离开启用单选按钮以保留当前断点 在命中所选断点后启用
因此,看起来您需要在SomeClass.doSomething行上设置一个,然后在Utils.doSomething方法中的任何需要它的地方我提出了添加此类条件的方法,它并不理想,但确实起到了作用
Arrays.asList((Thread.currentThread().getStackTrace())).stream()
.anyMatch(ste -> ste.declaringClass.equals("debugging.SomeClass"))
这不完全是我想要的。在所选断点被命中后,它将在断点上停止,但在再次命中所选断点之前,它是禁用的,这是预期的,但每次在堆栈中传递此断点时,我都希望停止。我已经编辑了我的问题以添加示例。是的,它按照预期的方式工作。它被禁用,直到再次命中断点,但我感兴趣的是,断点对于当前堆栈保持活动状态。让我们假设这个Utils.doSomething在某个循环中运行,然后它将仅在第一次迭代时停止。