如何在 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 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 是否为它们提供了特殊的工具以上是关于如何在 Eclipse 中使用条件断点?的主要内容,如果未能解决你的问题,请参考以下文章
当某个条件为真时,如何在 Eclipse 中以编程方式设置 C++ 断点?