【问题标题】:data breakpoints in java/eclipsejava/eclipse中的数据断点
【发布时间】:2011-05-04 10:00:07
【问题描述】:

在使用 VS 开发 C++ 时,您可以使用数据断点这一惊人的功能,当内存中某个地址的数据发生变化时触发。

在eclipse中开发java的时候有没有类似的功能?

谢谢!

编辑:关于“值更改时暂停”功能:我的印象是执行仍然必须到达断点所在的行。问题是我希望它在值更改后立即触发。

【问题讨论】:

    标签: java eclipse breakpoints


    【解决方案1】:

    最接近的事情是编辑断点属性。您可以添加条件来检查不同的值。另一种方法是在 setter 方法中添加断点。

    您可以通过在断点视图中右键单击已设置的断点来设置断点属性。

    【讨论】:

      【解决方案2】:

      在断点属性下,您可以选择使其有条件并选中单选按钮“值更改时暂停”。

      【讨论】:

      • 谢谢,但我究竟如何为我要监控的对象提供对象或变量?
      • 您在下面的字段中输入。当然,这与在变量更改时中断不同,但如果您的程序经常通过瓶颈,您可以在此处放置这样一个断点,理论上只有在某个值更改时才中断。
      【解决方案3】:

      右键单击断点并选择Breakpoint properties

      在打开的屏幕中,选择:Conditional -> Suspend when value changes

      【讨论】:

      • 谢谢,但我究竟如何为我要监控的对象提供对象或变量?
      • 在单选按钮下方的字段中,输入变量名称(类似于 this.foo)。有自动完成功能。
      【解决方案4】:

      据我所知,Eclipse 中没有这样的通用特性。但是,您可以为现有断点提供一些条件:

      在代码中的某处添加断点。然后,在“断点”视图中,右键单击它,然后选择“断点属性”。在面板中,您可以添加一个必须验证的条件以使应用程序在此断点处停止(例如if (foo > 0))。

      这不是你想要的,但我不认为 Eclipse 提供了这样的功能。

      【讨论】:

        【解决方案5】:

        您可以在字段上设置观察点:将光标放在声明字段的行并选择菜单Run -> Toggle Watchpoint
        或者只是通过双击该行的左边距来设置断点。

        您可以在添加后更改观察点的属性,如suspend on field accesssuspend on field modification。只需右键单击左边距的观察点并选择Breakpoint Properties...

        搜索 watchpoint 的帮助以获取更多信息:

        观察点是一个特殊的断点,只要给定表达式的值发生变化,它就会停止应用程序的执行,而无需指定它可能发生的位置。 ...

        【讨论】:

        • 完美!正是我需要的!
        • 这很有用(我 +1 了),但它仍然不是问题的答案。该中断在该声明的 any 实例上,而不是在特定实例上。
        • 我只有在字段不是最终字段时才提供观察点选项。如何查看对最终对象的访问? (我想查看何时将项目添加到地图或从地图中检索。)
        • 这应该是另一个问题......但奇怪的是,使用 Eclipse Mars 在最终变量处设置观察点没有问题(刚刚使用 ArrayList 和 Path 进行了测试),但是,无论最终与否,这不会观察保存在变量中的对象的内容 - 它 观察变量本身的内容,也就是说,在你的情况下,如果地图实例发生了变化。你可以在(Hash)Map的相应方法上下断点,并添加一个条件来检查this是你要观察的实例。
        【解决方案6】:

        使用变量视图:

        • 右键单击该字段并选择“切换观察点”,然后
        • 再次右键单击同一个实例并选择“实例断点...”,这允许您将特定断点限制为给定实例。

        请注意,性能可能不如内存硬件断点(例如在 VC++ 中)。

        【讨论】:

        • 这个选项还存在吗?在 Eclipse 2018-09 (4.9.0) 中,我只能在断点属性中设置线程过滤器。
        猜你喜欢
        • 1970-01-01
        • 2012-10-12
        • 1970-01-01
        • 2013-01-01
        • 2014-10-31
        • 2012-03-17
        • 2015-07-09
        • 1970-01-01
        • 2010-12-13
        相关资源
        最近更新 更多