سؤال

I want to set a debug breakpoint in IntelliJ Idea that is only active, if another previous breakpoint was activated. For example i have a breakpoint B1 on line 10, and another breakpoint B2 on line 20. Even if B2s condition is true, the debugger should only halt if B1s condition was true before B2s.

Is something like this possible in Idea?

Update:

Currently i'm working with this workaround:

  1. set the two breakpoints
  2. disable breakpoint #2
  3. start the debugger, wait until breakpoint #1 is active
  4. activate breakpoint #2

I hope there is a cleaner way to do this :)

هل كانت مفيدة؟

المحلول

You can do that in the View Breakpoints... view:

enter image description here

In your case you will first have to set a conditional breakpoint on B1 so that when it is hit then and only then B2 will be triggered.

enter image description here

نصائح أخرى

An alternate programmatic approach to debug specific classes when some condition in some class is met.

/*
 * 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);
}

Where you want a condition to set the breakpoint enter image description here

Where you want to stop based on a condition enter image description here

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top