【问题标题】:In the Eclipse debugger, what kind of changes can be "hot code replaced" into the running JVM?在 Eclipse 调试器中,哪些更改可以“热代码替换”到正在运行的 JVM 中?
【发布时间】:2011-08-04 21:43:23
【问题描述】:

在Eclipse中,如果你在“Debug”下运行一个程序,你可以对代码进行修改,而且大多数时候它会立即生效。

但有时它不会——在这种情况下,它会弹出一条消息,或者在“调试”窗格中的线程旁边显示“(可能不同步)”。

什么决定了可以热交换的更改类型?我注意到这些更改通常会失败:

  • 引入新的匿名内部类
  • 在类实例化时更改类(重命名/添加/删除字段和方法)
  • 添加 try-catch 块

但有时它似乎几乎是随机的。判断代码是否可以替换的逻辑是什么?

【问题讨论】:

    标签: java eclipse debugging jvm


    【解决方案1】:

    方法语句(过程代码)有效。与添加、删除或更改类模式相关的一切都不起作用。因此无需修改继承、字段、提取方法、更改签名等。

    如果您同时执行任何禁止的操作,通常热交换方法语句不起作用。那么热插拔连接就“断”了,可以这么说。

    我不确定的一件事是匿名类。从未尝试过与热插拔相关的操作。

    编辑:在 zeroturnaround 那边的人已经在他们的功能部分中编制了一个列表,jvm 调试器不能开箱即用地推广他们的产品:http://www.zeroturnaround.com/jrebel/features/。无论您是否喜欢该工具,该列表都反映了我的经验。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-10
      • 1970-01-01
      相关资源
      最近更新 更多