【问题标题】:How to debug a Java agent如何调试 Java 代理
【发布时间】:2016-01-12 10:48:07
【问题描述】:

目前有可能使用代理运行 JVM:

-javaagent:somejar.jar

为了运行我编写的 Java 代理,我必须将其放入 jar 中。因此它在调试方面受到限制。有没有一种技术可以在 IDE 中调试 Java 代理,同时将其附加到 JVM?

【问题讨论】:

  • 我认为值得一提的是,至少对我来说,premain 方法中的断点永远不会触发。但是在我的ClassFileTransformer 中,例如我的代理的内部类,断点会触发。

标签: jvm jvm-arguments java-bytecode-asm javaagents


【解决方案1】:

调试 API 不区分 Java 代理和“正常”代码。例如,如果您将代理的源代码保存在同一个项目中,则可以按照您的预期设置断点。然后,您的 IDE 将像往常一样简单地将源文件的名称和行号注册到调试 API。

【讨论】:

  • 我只是看不到如何在调试时将“普通代码”作为代理附加到 JVM。请您强调一下!
  • 您按照习惯捆绑代理,但将代理源代码导入项目。通过这种方式,您可以通知您的 IDE 您想要中断的源文件和行号。通常,您将代理设为子项目。
  • 它也可以在项目中包含代理代码,就像普通代码一样,并创建/指定仅包含清单的代理 jar。这也允许您轻松更新代理代码,而无需每次都重新构建 jar……
  • @Holger 很棒的提示!
猜你喜欢
  • 1970-01-01
  • 2012-10-08
  • 1970-01-01
  • 2020-02-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多