我想在 IntelliJ Idea 中设置一个调试断点,该断点仅在激活另一个先前断点时才处于活动状态。例如,我在第 10 行有一个断点B1,在第 20 行有另一个断点B2。即使 B2s 条件为真,调试器也应仅在 B1s 条件在 B2s 之前为真时停止。
在Idea中是否有可能发生这样的事情?
更新:
目前我正在使用这种解决方法:
- 设置两个断点
- 禁用断点 #2
- 启动调试器,等到断点 #1 处于活动状态
- 激活断点#2
我希望有一种更清洁的方法来做到这一点:)
我想在 IntelliJ Idea 中设置一个调试断点,该断点仅在激活另一个先前断点时才处于活动状态。例如,我在第 10 行有一个断点B1,在第 20 行有另一个断点B2。即使 B2s 条件为真,调试器也应仅在 B1s 条件在 B2s 之前为真时停止。
在Idea中是否有可能发生这样的事情?
更新:
目前我正在使用这种解决方法:
我希望有一种更清洁的方法来做到这一点:)
您可以在View Breakpoints...
视图中执行此操作:
在您的情况下,您首先必须在B1上设置一个条件断点,这样当它被击中时,才会触发B2 。
当满足某些类中的某些条件时,一种替代的编程方法来调试特定类。
/*
* Breakpoint helper, stops based on a shared state
* STOP variable
*
* Everything in here should be chainable
* to allow adding to breakpoints
*/
public final class DEBUG {
/*
* global state controlling if we should
* stop anywhere
*/
public static volatile boolean STOP = false;
public static volatile List<Object> REFS = new ArrayList<>();
/**
* add object references when conditions meet
* for debugging later
*/
public static boolean ADD_REF(Object obj) {
return ADD_REF(obj, () -> true);
}
public static boolean ADD_REF(Object obj, Supplier<Boolean> condition) {
if (condition.get()) {
REFS.add(obj);
return true;
}
return false;
}
/*
* STOPs on meeting condition
* also RETURNS if we should STOP
*
* This should be set when a main condition is satisfied
* and can be done as part of a breakpoint as well
*/
public static boolean STOP(Supplier<Boolean> condition) {
if (condition.get()) {
STOP = true;
return true;
}
return false;
}
public static boolean STOP() {
return STOP(() -> true);
}