Debugging IntelliJ Idea(调试)依赖于其他断点的条件断点

Debugging IntelliJ Idea(调试)依赖于其他断点的条件断点,debugging,intellij-idea,breakpoints,conditional-breakpoint,Debugging,Intellij Idea,Breakpoints,Conditional Breakpoint,我想在IntelliJ Idea中设置一个调试断点,该断点仅在另一个先前的断点被激活时才处于活动状态。 例如,我在第10行有一个断点B1,在第20行有另一个断点B2。即使B2s条件为真,调试器也只应在B2s之前B1s条件为真时停止 这样的想法可能吗 更新: 目前我正在使用此解决方案: 设置两个断点 禁用断点#2 启动调试器,等待断点#1处于活动状态 激活断点#2 我希望有一种更简洁的方法来实现这一点:)您可以在查看断点…查看: 在您的情况下,您首先必须在B1上设置一个条件断点,这样当它被点击时

我想在IntelliJ Idea中设置一个调试断点,该断点仅在另一个先前的断点被激活时才处于活动状态。 例如,我在第10行有一个断点B1,在第20行有另一个断点B2。即使B2s条件为真,调试器也只应在B2s之前B1s条件为真时停止

这样的想法可能吗

更新:

目前我正在使用此解决方案:

  • 设置两个断点
  • 禁用断点#2
  • 启动调试器,等待断点#1处于活动状态
  • 激活断点#2

  • 我希望有一种更简洁的方法来实现这一点:)

    您可以在
    查看断点…
    查看:

    在您的情况下,您首先必须在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);
    }
    
    /*
    *断点助手,基于共享状态停止
    *停止变量
    *
    *这里的一切都应该是可链接的
    *允许添加到断点的步骤
    */
    公共最终类调试{
    /*
    *全球国家控制,如果我们应该
    *停在任何地方
    */
    公共静态可变布尔停止=false;
    public static volatile List REFS=new ArrayList();
    /**
    *在条件满足时添加对象引用
    *以便以后调试
    */
    公共静态布尔添加参考(对象obj){
    返回ADD_REF(obj,()->true);
    }
    公共静态布尔添加参考(对象对象对象、供应商条件){
    if(condition.get()){
    参考添加(obj);
    返回true;
    }
    返回false;
    }
    /*
    *在满足条件时停止
    *如果我们应该停止,也会返回
    *
    *这应该在满足主要条件时设置
    *也可以作为断点的一部分来完成
    */
    公共静态布尔停止(供应商条件){
    if(condition.get()){
    停止=真;
    返回true;
    }
    返回false;
    }
    公共静态布尔停止(){
    返回停止(()->true);
    }
    
    需要设置断点的条件的位置

    您希望根据某个条件停止的位置

    我一直忽略了这个菜单项,有时我看不见树木:)太糟糕了,他们把这个菜单埋了起来,很难找到。收藏夹>断点>右键+单击断点>编辑断点>更多FWIW,你可以在IntelliJ 2017.1中通过右键单击断点,然后单击机器人上的“更多”来访问它tom在弹出窗口的左边。你可以为此指定一个快捷方式,或者只使用默认的Ctrl+Shift+F8一次查看所有的bps。这太棒了。我甚至不知道这是一件事。