【问题标题】:Is there a way in the Eclipse debugger to be notified when the state of a Java object changes?Eclipse 调试器中是否有办法在 Java 对象的状态发生更改时收到通知?
【发布时间】:2009-11-10 17:59:53
【问题描述】:

我正在调试一些遗留代码,其中我们有一个似乎在外部更改的缓存对象。

如果我知道它的对象标识符(在调试时),是否有某种方法可以“监视”它,以便在同一线程或另一个线程中的其他代码尝试修改其状态时,它会触发我的调试?

我不能只使用表达式监视它,因为其他地方可能会引用该对象,并且同一类有许多实例。

【问题讨论】:

  • 你能在它的每个方法上设置断点吗?是不是太多了?
  • 当然在对象类的每个可以修改对象状态的方法中放置一个条件断点。仅中断“this”的条件表达式是对象标识符。
  • 属性是直接操作的(我没有写这段代码...)

标签: java eclipse debugging


【解决方案1】:

在值更改时在要停止的代码中设置断点。

  • 从断点视图开始。
  • 选择断点
  • 右键单击并转到“断点属性”
  • 选中“启用条件”框
  • 在文本字段中输入要观察的变量的名称
  • 选择“条件更改值”单选按钮

【讨论】:

  • 我不明白“你想在值变化时停下来”。所以你可以在任何地方放置一个断点(即使在死代码中),当值改变时你会在这一点停止?不能说eclipse“值变化时下断点并停止”吗?
【解决方案2】:

如果它在某处被声明为类或实例变量(应该是,你怎么能缓存它),那么你也可以在特定的行上设置一个断点。它将被称为watchpoint,默认情况下会在访问修改(可通过断点属性配置)时触发。

【讨论】:

  • 不是变量的变化,而是需要观察的对象状态的修改。
  • @BallusC: 要是写这段代码的人真正使用了getter和setter就好了:)
  • 我不是指 getter/setter。我实际上是指类/实例变量。将断点放在变量上,而不是方法上。
猜你喜欢
  • 2018-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-02
  • 2014-02-27
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
相关资源
最近更新 更多