我在Linux机器上运行了一个java进程,但它无法在调试模式下启动/重新启动。我阅读了jsadebugd命令并启动了守护程序,但我希望从IDE(可能是Eclipse)调试器或者可能是YourKit或jconsole连接它。我怎样才能做到这一点?远程JVM是1.6+。
答案 0 :(得分:1)
我假设您提到了Yourkit和其他工具,您真正想要做的是查看应用程序中的对象状态。有几个选项,虽然我认为它不会让你能够设置像Eclipse或其他调试器那样的断点(虽然我会听到什么限制你在调试模式下启动进程 - 技术?过程?)
您是否尝试过连接:VisualVM?我不相信你需要在调试模式下启动,它将让你能够导航对象图,并检查对象。您甚至可以使用它来获取堆转储,并使用OQL查询通过它们进行临时分析。
如果您在JDK6 +上运行 - 您是否尝试使用btrace进行检测?有些notes from the sailfin team听起来很有希望,就像Solaris中的DTrace一样,这似乎在各种情况下都很有用。
答案 1 :(得分:0)
我不确定我是否正确理解了您的限制,但您可以启用JVM并启用调试服务器(提供JDWP)。请参阅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/
中的“远程调试”部分答案 2 :(得分:0)
我不确定这是否暴露在Eclipse中,但是这里是如何用jdb做的:
http://java.sun.com/javase/6/webnotes/trouble/TSG-VM/html/tooldescr.html#gbmog