当堆栈跟踪中存在特定类时,Intellij中是否有办法创建条件断点?或者,当在此堆栈跟踪中传递特定的断点时。
给出的例子:
假设我们有一些实用程序方法Utils.doSomething()
,而我只想从SomeClass.doSomething()
执行此方法,然后再停在那里。
我确实知道存在“在达到断点之前禁用”的功能,但这使代码执行在满足初始条件后的任何时候都在那里停止执行。
示例:
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;
从Utils.doSomething()
开始执行时,它在SomeClass.doSomething()
中停止,但是在下一行再次执行Utils.doSomething()
时,它没有停止。
通过SomeClass.doSomethingElse()
执行时,它没有正确停止
答案 0 :(得分:1)
我认为您正在寻找的是这里:
https://www.jetbrains.com/help/idea/configuring-breakpoints.html
要设置当前断点所依赖的断点,请从 禁用,直到选定的断点命中下拉列表。一旦依赖 已设置,禁用当前断点,直到选择了一个 击中。
选择“再次禁用”单选按钮以禁用当前 击中选定断点后的断点。
选择“离开”启用单选按钮以保留当前断点 在选定的断点被击中后启用。
因此,您似乎需要在SomeClass.doSomething()
行上设置一个,然后在Utils.doSomething()
方法中需要的地方设置
答案 1 :(得分:1)
我想出了添加这种条件的方法,虽然不理想,但确实可以完成工作
Arrays.asList((Thread.currentThread().getStackTrace())).stream()
.anyMatch(ste -> ste.declaringClass.equals("debugging.SomeClass"))