【问题标题】:How to use conditional breakpoint in Eclipse?如何在 Eclipse 中使用条件断点?
【发布时间】:2011-11-03 21:24:30
【问题描述】:

我想知道如何在 Eclipse 中放置条件断点。我有这样的代码:

public static void doForAllTabs(String[] tablist){
    for(int i = 0; i<tablist.length;i++){
-->        doIt(tablist[i]);
    }
}

现在我想在带箭头的行上放一个断点,但希望它仅在以下情况下触发:

tablist[i].equalsIgnoreCase("LEADDELEGATES");

【问题讨论】:

    标签: java eclipse debugging conditional-breakpoint


    【解决方案1】:

    放置你的断点。 右键单击边缘的断点图像并选择Breakpoint Properties:

    根据需要配置条件:

    【讨论】:

    • 最新的 Eclipse 也直接在断点视图中包含这些选项。
    • 谢谢伙计!节省了我很多时间! :)
    • 哇!我一直在使用:if(condition){System.out.println("debug");} 并且多年来一直在使用 print 语句。
    • 别忘了在最后省略; - 我在包含它时出错了。
    • 非常感谢!这很有帮助。
    【解决方案2】:

    在doIt(tablist[i]);行上做一个正常的断点

    右键->属性

    勾选“有条件”

    输入tablist[i].equalsIgnoreCase("LEADDELEGATES")

    【讨论】:

    • 你不需要在表达式末尾加分号吗?如果我添加分号,我只能让条件断点工作(即使那样也不经常)。
    • @CajunLuke 这里也一样。我刚刚用final T[](非泛型)试了一下,得到Conditional breakpoint has compilation error(s)。有趣的是,我的条件是bonds==null,错误对话框中的原因是invalid AssignmentOperator。 sigh 有时 Eclipse 的行为更像是 12 岁的人类而不是 12 岁的软件。
    【解决方案3】:

    1. 创建一个类

    public class Test {
    
     public static void main(String[] args) {
        // TODO Auto-generated method stub
         String s[] = {"app","amm","abb","akk","all"};
         doForAllTabs(s);
    
     }
     public static void doForAllTabs(String[] tablist){
         for(int i = 0; i<tablist.length;i++){
             System.out.println(tablist[i]);
        }
      }
    }
    

    2. 在左侧右击 System.out.println(tablist[i]); 在Eclipse中 --> 选择切换断点

    3. 右击 切换点 --> 选择 断点属性

    4. 勾选 有条件的 复选框 --> write tablist[i].equalsIgnoreCase("amm") in text field --> 点击 好的

    5. 右键点击类 --> 调试为 --> em> Java 应用程序

    【讨论】:

      【解决方案4】:

      来自Eclipsepedia关于如何设置条件断点:

      首先,在给定位置设置断点。然后,使用上下文 左侧编辑器边缘或断点中断点上的菜单 在 Debug 透视图中查看,然后选择断点的属性。 在对话框中,勾选 Enable Condition,然后输入任意 Java 条件,例如list.size()==0。现在,每次断点是 达到,表达式在断点的上下文中计算 执行,并且断点被忽略或接受,具体取决于 关于表达式的结果。

      条件也可以用其他断点来表示 属性,例如命中计数。

      【讨论】:

      • 您的链接没有得到? 编码。试试this。
      【解决方案5】:

      触发条件断点需要遵循简单的步骤。

      步骤 1- 当断点条件为真时,将断点放在要运行的行上(现在问题出现在哪里放置断点条件)

      第 2 步- 放置断点后,只需右键单击位于代码左边距的小断点图像。

      第 3 步- 点击后你会发现一些选项点击断点属性。

      第 4 步- 点击后你会发现复选框,即条件,只需选中它

      步骤 5- 将出现文本框 Enable,您需要在其中编写条件,只有当条件成立时,才会执行具有断点的行

      希望我的回答对你有用

      【讨论】:

        【解决方案6】:

        一种可能更方便的方法:在需要断点的地方,编写 if 语句并在其内容中设置断点。

        if(tablist[i].equalsIgnoreCase("LEADDELEGATES")) {
        -->    int breakpoint = 0; //don't do anything
        }
        

        (断点用箭头表示)

        这样,断点仅在您的条件为真时触发。如果没有那么多弹出窗口,这可能会更容易。

        【讨论】:

        • 想知道这是否是条件断点在底层实现的方式,或者 java 是否为它们提供了特殊的工具
        猜你喜欢
        • 2011-06-11
        • 1970-01-01
        • 1970-01-01
        • 2015-08-23
        • 2012-05-02
        • 1970-01-01
        • 2022-07-28
        • 2013-01-01
        • 2014-07-30
        相关资源
        最近更新 更多