在RCP中保持正常:设备不跟踪资源分配

我试图让Sleak在我的Indigo RCP应用程序上工作。 我已按照本指南中的步骤操作。 即我已经安装了插件,将swt工具插件添加到当前插件,添加了所需的插件,修改了跟踪选项,并使用folder.addView("org.eclipse.swt.tools.views.SleakView");在我的应用程序中添加了视图folder.addView("org.eclipse.swt.tools.views.SleakView");

该视图确实显示但我在尝试使用它时仍然收到错误“设备不跟踪资源分配”。

我已经在stackoverflow中尝试了关于此问题的旧问题的答案,但没有运气

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

Sleak SWT工具,Device不跟踪资源分配

我已经明确检查过调试配置中加载的.options文件是否确实具有所需的跟踪选项。

还有其他想法吗?

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

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

在我们的软件上发生的事情是在上面调用PlatformUI.createDisplay()之前调用了Display.getDefault() PlatformUI.createDisplay() 。 它导致创建一个新的Display对象,该对象被设置为默认值。 此创建未读取和设置调试设置。

当我们的代码进入PlatformUI.createDisplay()调用时,它实际上并没有创建新的显示。 相反,它返回了先前创建的,不是调试友好的。 因此,领导Sleak进入“设备不跟踪资源分配”的警告。

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

我认为您没有正确设置这些属性:

 org.eclipse.ui/debug=true org.eclipse.ui/trace/graphics=true 

在此处输入图像描述