非线性依赖条件断点

xtr*_*cto 5 java ide debugging jvm

是否可以设置断点,以便在指令达到某个条件后程序停止执行true

一个类有一个名为的变量currency,我想创建一个断点,使程序在之后的任何一行停止currency == 20.我不知道行号在哪里currency被改变,所以这就像在我的班级的每一行都设置一个断点[编辑.哪里currency变了].

有没有办法实现这一点(除了在每一行添加一个断点)?

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

dan*_*ben 3

以下是有关在 NetBeans 中设置条件断点的链接: http://www.java-hair.com/ ?p=61

\n\n

相关文字:

\n\n
\n

在 NetBeans 中,创建一个断点,\n 右键单击​​表示断点的粉色小方块\n。单击\n \xe2\x80\x9c自定义\xe2\x80\x9d。当出现自定义对话框时,检查 \xe2\x80\x9cCondition\xe2\x80\x9d 并填写\n 条件。以上是 NetBeans 中此对话框的示例。

\n
\n\n

它们还涵盖 Eclipse 和 JDeveloper。

\n\n

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

\n\n

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

\n\n

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

\n