我很想学习如何debuggingEclipse的IDE。 回到使用VS for .NET开发的时候,我可以随时将VS附加到一个进程,并开始追查问题。 我希望会有类似eclipse的东西,但作为Java世界的新手,我不知道这一点。
当我和iBUS(Ubuntu 9.10)一起运行时,我的eclipse最近经常挂起。 我希望我能找出真正挂在我的日食上的东西,避免这种情况发生(想象一下你的日食挂起,每一个打开的文件都closures了,这只会让我发疯)。
编辑你的eclipse.ini文件,在底部添加以下内容(在-vmargs之下):
-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000
然后在另一个相同版本的Eclipse中,您可以导入您有兴趣调试的插件。 文件 – >导入… – >插件开发 – >插件和片段。 导入从活动平台导入为“具有源文件夹的项目”,在下一个选项卡上选择您感兴趣的插件。
设置适当的断点。
然后在调试配置中创建一个新的“远程Java应用程序”。 本地主机,端口8000.在源选项卡上添加Java项目,然后进行调试。
你可以用任何Java应用程序来做什么来看看现在正在发生的事情是发送一个kill -QUIT
。 这将导致JVM将其所有线程的堆栈跟踪转储到stdout。 在这之间做一次这三次,你可以看到哪些线程不是很好地移动。
另一个尝试是将JConsole附加到正在运行的进程。
有一个关于找到冻结Eclipse的原因的线程 。
其中一个解决方案建议使用-consolelog
选项启动Eclipse 。 这对于快速浏览正在发生的事情(在进行实际的调试之前)可能是有用的。
回到使用VS for .NET开发的时候,我可以随时将VS附加到一个进程,并开始追踪这个问题。
在Java平台调试器体系结构(JPDA)中,Java也可以进行远程调试,只需启动要启用远程调试的调试应用程序即可。 这里有一篇文章展示了如何做到这一点,以及如何配置Eclipse来调试删除应用程序。
请注意,从Java 5开始,应该在-Xdebug
和-Xrunjdwp
选项上选择-agentlib:jdwp
选项,如Sun VM调用选项中所述 。
更新: Eclipse 是一个Java应用程序,所以应该可以添加eclipse.ini
文章中提到的选项。 从来没有尝试过,但(我错过了你想调试Eclipse本身的事实)。
基本上有两种调试Java应用程序的方法(例如Eclipse)。 你可以使用JConsole,但是它不会给你很多细节。 要附加JConsole,您必须启用远程调试; 这需要一个JVM参数,您可以将其写入Eclipse可执行文件旁边的eclipse.ini文件中。
另一个选择是从Eclipse启动一个运行时工作台:这用于测试你自己的插件,但是由于Eclipse插件是相同的,所以可以用Eclipse应用程序启动一个调试会话。 为此,您至少需要在工作空间中有一个插件(例如创建一个新的hello world插件项目),然后您可以将其作为Eclipse应用程序进行调试。