【发布时间】:2013-10-22 11:21:39
【问题描述】:
我有一个 Eclipse RCP 应用程序,它已从 Eclipse IDE 以调试模式启动。我在RCP 应用程序中创建了一个简单的SWT TreeViewer 控件,用于显示Throwable 的原因链和堆栈跟踪。我想要的是,如果开发人员在查看器中双击 StackTraceElement,那么“主机”Eclipse IDE 将在正确的行号处打开相应的文件。
到目前为止我最好的解决方法是我可以将StackTraceElement 打印到控制台(IDE 的),然后单击(filename.java:linenumber) 以这种方式打开文件。
我的问题分为两部分:
- 是否存在从 RCP 应用程序(在调试模式下,如果这很重要)返回主机 IDE 的任何内置通信路径?
- 如果有这样的路径,是否有一些命令可以指示 IDE 在正确的位置打开文件?
我知道我可以编写一个在 IDE 中使用的插件,然后我可以通过套接字或类似的东西与它通信。我更感兴趣的是发现我可以使用的任何内置功能。
【问题讨论】:
-
您所做的目的有点不清楚。这是否仅与调试有关,还是您提到的 RCP 的预期行为?
-
RCP 应用程序捕获它自己的异常并显示它的所有详细信息是一种预期行为。在开发人员调试 RCP 应用程序时,最好影响主机 Eclipse IDE 打开从 StackTraceElements 引用的文件,这些文件可从 Exception 访问。
-
一种简单的替代方法是添加 Java 异常断点(例如,通过“断点”视图中的“J!”按钮),并使用“主机”调试器导航调用堆栈.
-
感谢@Andy 的建议,但这并不是我想到的用例的替代方案。把它想象成当你得到一个异常并对控制台执行 e.printStackTrace() 时。在查看堆栈跟踪时,您会看到文件名:行号引用,并且您希望打开这些文件以查看代码。当然,我可以使用异常断点再次运行应用程序,但这与在事件发生后查看异常记录不同。
标签: java eclipse debugging eclipse-rcp rpc