java - 非线性依赖条件断点

标签 java debugging ide jvm

是否可以设置断点,以便程序在指令使特定条件为真后停止执行?

一个类有一个名为currency 的变量,我想打断点让程序在currency == 20 之后的任何一行停止。我不知道 currency 更改的行号,所以这就像在我的类的每一行中放置一个断点 [ed. currency 发生变化的地方。

有什么方法可以做到这一点(除了在每行添加一个断点之外)?

我正在使用 NetBeans,但欢迎使用任何其他 IDE 中的解决方案。

最佳答案

这是一个关于在 NetBeans 中设置条件断点的链接:http://www.java-hair.com/?p=61

相关文字:

In NetBeans, create a breakpoint, the right click on the little pink square that signifies the break. Click on “Customize”. When the customize dialog comes up, check “Condition” and fill in the condition. Above is an example of this dialog in NetBeans.

它们还涵盖了 Eclipse 和 JDeveloper。

编辑:回应您的评论 - 不,这不能按照您想要的方式完成。调试器设置断点的方法是更改​​指令中设置断点的字节。评估指令时,该字节的存在将控制权转移给调试器,调试器用之前的字节替换该字节。当恢复执行时,调试器将指令指针移动到设置断点的指令。

单行上的条件断点很容易实现 - 当控制权转移到调试器时,他只需检查条件,如果条件不成立,则他会自动恢复执行。

那么,如果您不必将条件断点附加到一行,它将如何工作?它必须附加到每一行(就像您推测的那样,否则您需要这样做才能达到这种效果)。我不需要这样做,但我想这会是不可取的,因为它会大大减慢程序的执行速度。更好的方法可能是使用您的 IDE 搜索所有货币实例的代码以查看它可能被设置的位置,并在周围放置条件断点。

关于java - 非线性依赖条件断点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2118128/

相关文章:

debugging - 您必须修复的最混淆的代码是什么?

java - 使用 PaintComponent() 重新绘制

java - Hibernate 中的枚举,作为枚举持久存在

debugging - 在 Debug模式下发布软件有什么问题吗?

c - 检测整数溢出

Eclipse 的 Javascript 插件?

java - 从应用程序上下文中删除 Spring Bean

java - 在没有 XML 配置的情况下实现 JPA 默认监听器

java - Eclipse/STS 自动将 "new"更正为 "newEmail"

c++ - 是否有插入函数定义的快捷键?