如何在 Eclipse 中使用条件断点?

Posted

技术标签:

【中文标题】如何在 Eclipse 中使用条件断点?【英文标题】:How to use conditional breakpoint in 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");

【问题讨论】:

【参考方案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 AssignmentOperatorsigh 有时 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 是否为它们提供了特殊的工具

以上是关于如何在 Eclipse 中使用条件断点?的主要内容,如果未能解决你的问题,请参考以下文章

Java eclipse中调用者的条件断点

当某个条件为真时,如何在 Eclipse 中以编程方式设置 C++ 断点?

eclipse 断点调试

如何在 Visual C++ 中添加条件断点

如何在 VS2015 断点的条件表达式中使用 Environment.StackTrace

如何根据命中的另一个断点添加条件中断?视觉 C++