Sleak (SWT & RCP) : 设备没有跟踪资源分配 (eclipse 4.3)

Posted

技术标签:

【中文标题】Sleak (SWT & RCP) : 设备没有跟踪资源分配 (eclipse 4.3)【英文标题】:Sleak (SWT & RCP) : Device is not tracking resource allocation (eclipse 4.3) 【发布时间】:2014-02-23 00:06:08 【问题描述】:

我的 RCP 应用程序(Video-Player with OpenCV java)抛出了著名的:

org.eclipse.swt.SWTError: No more handles 错误

所以现在我找到了 Sleak 和 tutorial

我尝试了第一种方法,但是当我启动应用程序并单击 Sleak-View 中的 snap 按钮时,我得到了: “警告:设备未跟踪资源分配”。

当我做第二种方式时(.options 文件和 eclipse.ini 中的 -debug (插入到 -vmargs 之前) 我在简陋的视图中得到了一些结果,但它们都是 Eclipse 资源......就像那里说的那样,我已经跟踪了 eclipse......但我不想......

我在 Eclipse 4.3 SR1 (RCP) 上运行 sleak build for 4.3 (我在 4.4 版本中尝试过,但也没有用)

而在我的 RCP (e4) 应用程序中,我不参与其中

Display display = PlatformUI.createDisplay();

喜欢建议的here。

【问题讨论】:

我已经检查了一个独立的独立 SWT 应用程序。本教程中的提示有效。但正如我所说,在 RCP 中无法访问显示创建。 Sleak in RCP: Device is not tracking resource allocation的可能重复 【参考方案1】:

一天中的大部分时间都在为此苦苦挣扎,发现各种过时的食谱和 HowTo 页面......在 eclipse 论坛的一篇帖子中,有人引用了这个页面,这对我有用。 (氧气,纯 E4 独立 RCP 应用)

https://wiki.eclipse.org/Eclipse4/RCP/FAQ#How_to_use_Sleak_in_e4AP

即使看起来很奇怪,您也必须让 Eclipse 工作台应用程序运行并设置各种标志,然后它才会在调试器中运行您的应用程序时关注您的项目设置。

【讨论】:

【参考方案2】:

我最近遇到了同样的问题,并设法找到了解决方案。这是我发现的,谁知道它可能会对你有所帮助。

在我们的 RCP 启动时,我们的 Application 类调用了 PlatformUI.createDisplay(),它链接到了对 Workbench.createDisplay() 的调用。这正是正确读取和设置 Sleak 所需的调试设置的确切点。

在我们的软件上发生的情况是,在上述对 PlatformUI.createDisplay() 的调用之前调用了 Display.getDefault()。它导致创建了一个新的 Display 对象,该对象被设置为默认对象。此创建没有读取和设置调试设置,因为它发生在不同的路径上。

当我们的代码到达 PlatformUI.createDisplay() 调用时,它实际上并没有创建一个新的 Display。相反,它返回了先前创建的、不适合调试的。从而导致 Sleak 发出“设备未跟踪资源分配”的警告。

在 Display.register (Display display) 方法中添加断点有助于我们识别早期创建的来源并正确更改它。

您可能没有在代码上手写 createDisplay() 调用,但我很确定某处有一个,因为每个平台都需要一个 Display。

【讨论】:

【参考方案3】:

将此添加到您的调试配置中:

Tracing Tab:
    org.eclipse.ui:
    debug = true
    trace/graphics = true

http://www.vogella.com/tutorials/EclipsePerformance/article.html#performance_sleak

【讨论】:

不像我在最后一个答案的评论中写的那样对我有用【参考方案4】:

我刚刚遇到这个问题并解决了。

转到调试配置-> 跟踪选项卡。 在这里确保您在左侧选择了 org.eclipse.ui,并在右侧选择了跟踪/图形和调试。 现在启动它。现在,在您的 RCP 中,您将获得不可靠的信息。

【讨论】:

是的,对不起,我之前找到了这个信息,但它对我不起作用。我无法让 Sleak 与 RCP 合作,因为...

以上是关于Sleak (SWT & RCP) : 设备没有跟踪资源分配 (eclipse 4.3)的主要内容,如果未能解决你的问题,请参考以下文章

RCP表单编辑器---》一打开编辑器

SWT和Swing代码的区别

2020-7-8 RCP小程序 英语学习(文件读取)软件

如何开发eclipse插件

图像处理小字典——SWT

如何创建 Java 项目模板?