调试Eclipse IDE本身

10

我想学习如何调试eclipse IDE。

回到我使用VS进行.NET开发的时候,我可以随时将VS附加到进程上并开始跟踪问题。我希望在eclipse中也有类似的功能,但作为Java世界的新手,我不知道这方面的情况。

最近我在Ubuntu 9.10上运行eclipse和iBUS时经常出现卡顿。我希望能找出真正导致eclipse卡顿的原因,并避免这种情况(想象一下你的eclipse卡死了,每个打开的文件都关闭了,这简直让人发疯)。

5个回答

13

编辑你的eclipse.ini文件,在底部添加以下内容(在-vmargs下面):

-Xdebug
-Xnoagent
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

在同一版本的另一个Eclipse中,您可以导入想要调试的插件。选择文件 -> 导入... -> 插件开发 -> 插件和片段。从活动平台导入,并选择“带源文件的项目”,在下一个选项卡中选择您感兴趣的插件。

根据需要设置断点。

然后在“调试配置”中创建新的“远程Java应用程序”。本地主机名为localhost,端口为8000。在源标签页上添加Java项目并进行调试。


哇塞,这正是我一直在寻找的东西。 - Nicholas DiPiazza

3

这里有一个关于寻找Eclipse冻结原因的讨论线程

其中一个解决方案建议使用-consolelog选项启动Eclipse。这可能对快速了解发生了什么(在进行实际调试之前)很有用。


2

你可以对任何Java应用程序执行kill -QUIT命令,以查看当前正在进行的操作。这将导致JVM将其所有线程的堆栈跟踪转储到stdout。在每次间隔一秒的情况下执行三次此操作,您就可以看到哪些线程没有正常运行。

另一个尝试的方法是连接JConsole到正在运行的进程。


你说你正在使用Ubuntu,所以:1)使用ps auxw找到进程ID。2)在shell中输入“kill -QUIT <process_id>”。 - Thilo

1
回到我使用VS进行.NET开发的时候,我可以随时将VS附加到进程并开始跟踪问题。
在Java中,远程调试也是可能的,只需使用Java平台调试架构(JPDA)启动要调试的应用程序即可。这里有一篇文章展示了如何做到这一点以及如何配置Eclipse来调试远程应用程序。
请注意,从Java 5开始,您应该优先选择-agentlib:jdwp选项而不是-Xdebug和-Xrunjdwp选项,如Sun VM Invocation Options所述。
更新:Eclipse是一个Java应用程序,因此应该可以在eclipse.ini中添加文章中提到的选项。虽然我没有尝试过(我错过了您想要调试Eclipse本身的事实)。

这篇文章告诉我如何调试一个JAR文件。但是我发现Eclipse看起来像本地可执行文件。我该如何告诉Eclipse将调试信息发布到端口? - Phương Nguyễn

0

调试Java应用程序(例如Eclipse)基本上有两种方法。您可以使用JConsole,但它不会提供很多细节。要附加JConsole,您必须启用远程调试;这需要一个JVM参数,您可以将其写入紧挨着Eclipse可执行文件的eclipse.ini文件中。

另一种选择是从Eclipse启动运行时工作台:这用于测试您自己的插件,但由于Eclipse插件相同,因此可以使用Eclipse应用程序启动调试会话。要做到这一点,您需要在工作区中至少有一个插件(例如创建一个新的hello world插件项目),然后您可以将其作为Eclipse应用程序进行调试。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接