【问题标题】:Can I connect to a jsadebugd process on a remote machine from Eclipse/IDE debugger?我可以从 Eclipse/IDE 调试器连接到远程机器上的 jsadebugd 进程吗?
【发布时间】:2009-06-26 18:45:28
【问题描述】:

我有一个在 Linux 机器上运行的 java 进程,但它无法在调试模式下启动/重新启动。我阅读了jsadebugd 命令并启动了守护程序,但我想从 IDE(可能是 Eclipse)调试器或 YourKit 或 jconsole 连接到它。我怎样才能做到这一点?远程 JVM 是 1.6+。

【问题讨论】:

  • 在哪里可以找到解决问题的方法?

标签: java eclipse debugging


【解决方案1】:

我假设既然您提到了 Yourkit 和其他工具,那么您真正想要做的是查看应用程序中的对象状态。有几个选项,虽然我不认为它能让你像 Eclipse 或其他调试器那样设置断点(虽然我很想知道是什么限制你在调试模式下启动进程 - 技术? 过程?)

  1. 您是否尝试过连接:VisualVM?我认为您不需要以调试模式开始,它让您能够导航对象图和检查对象。您甚至可以使用它来获取堆转储并使用 OQL 查询通过它们进行一些临时分析。

  2. 如果您在 JDK6+ 上运行 - 您是否尝试过使用 btrace 进行检测?一些 notes from the sailfin team 听起来很有希望,就像 Solaris 中的 DTrace,这似乎在各种情况下都很有用。

【讨论】:

  • 进程已经在运行,我想看看能不能以某种方式窥探JVM。它还没有在调试模式下启动,所以我正在探索这个选项。不过总的来说,只要您有相应的流程设置,Eclipse 调试器和 Yourkit 就足以解决问题。我之前没有尝试过btrace,但我会检查一下。
  • @thimmayya 这些笔记是否回答了您的问题,还是您还在寻找?
  • 这些笔记很有帮助。我还没有尝试过 btrace,但是文档确实说可以针对正在运行的 Java 进程运行 BTrace 程序。谢谢。
【解决方案2】:

我不确定我是否正确理解了您的限制,但您可以在启用调试服务器(服务 JDWP)的情况下启动 JVM。例如,参见http://java.sun.com/j2se/1.4.2/docs/guide/jpda/conninv.html中的“Sun VM 调用选项”

然后您可以将您的 Eclipse 调试器连接到正在运行的 JVM。请参阅此处的“远程调试”部分http://www.ibm.com/developerworks/library/os-ecbug/

【讨论】:

    【解决方案3】:

    我不确定这是否被 Eclipse 公开,但这里是使用 jdb 的方法:

    http://java.sun.com/javase/6/webnotes/trouble/TSG-VM/html/tooldescr.html#gbmog

    【讨论】:

      猜你喜欢
      • 2018-09-20
      • 2013-02-25
      • 1970-01-01
      • 2011-02-08
      • 2016-10-30
      • 2014-11-09
      • 2011-08-08
      • 2014-01-07
      • 2016-09-25
      相关资源
      最近更新 更多