2014-01-30 24 views
3

我的RCP應用(視頻播放器的OpenCV的Java)拋出著名的:Sleak(SWT和RCP):設備未跟蹤資源分配(蝕4.3)

org.eclipse.swt.SWTError: No more handles錯誤

所以,現在我發現Sleak和tutorial

我tryed第一種方式,但是當我啓動應用程序,然後單擊在Sleak-查看我的扣: 「警告:設備未跟蹤資源分配」。

當我做第二個方法(可供選項文件和-debug中的eclipse.ini(插入以前生產-vmargs) 我得到的sleak查看了一些成果,但他們所有的Eclipse資源......像說在那裏我已追蹤日食...但我不想...

我在Eclipse 4.3 SR1(RCP)上運行sleak build爲4.3 (我已經嘗試過4.4版本,但它做了也不工作)

在我的RCP(E4)應用程序是任何部分,我做

Display display = PlatformUI.createDisplay(); 

像建議here

+0

我檢查了獨立SWT應用程序。並從教程提示工作。但正如我所說,在RCP中不可能訪問顯示創建。 – garyee

+0

[Sleck in RCP:設備未跟蹤資源分配]可能的重複(http://stackoverflow.com/questions/33810556/sleak-in-rcp-device-is-not-tracking-resource-allocation) –

+0

它是不是的,因爲這個問題首先被問到,並且我在那裏嘗試了所有的礦工,沒有任何幫助。 – garyee

回答

0

我剛剛面對這個問題並解決了它。

轉到調試配置 - >跟蹤選項卡。 這裏確保你已經在左邊選擇了org.eclipse.ui並且在右邊選擇了跟蹤/圖形和調試。 現在啓動它。在您的RCP中,您現在將獲得有關信息。

+0

是的,沒有抱歉,我之前找到這個信息,但它沒有爲我工作。 我無法讓Sleak與RCP一起工作,因爲... – garyee

0

我最近面臨同樣的問題,並設法找到一個解決方案。這是我發現的,誰知道它可以幫助你。

在我們的RCP啓動時,我們的Application類上有一個PlatformUI.createDisplay()調用,該類調用Workbench.createDisplay()。這就是Sleak所需的調試設置正確讀取和設置的確切位置。

我們的軟件發生的事情是在上面調用PlatformUI.createDisplay()之前調用Display.getDefault()。它導致創建一個新的Display對象,該對象被設置爲默認對象。該創建沒有讀取和設置調試設置,因爲它發生在不同的路徑上。

當我們的代碼進入PlatformUI.createDisplay()調用時,它實際上並沒有創建一個新的Display。相反,它返回了以前創建的,不適合調試的。從而引發Sleak關於「設備未跟蹤資源分配」的警告。

在方法Display.register(Display display)中添加一個斷點,幫助我們識別早期創建源並正確更改它。

你可能沒有親手寫你的代碼的createDisplay()調用,但我確定有一個地方,因爲每個平臺都需要一個Display。

0

大部分時間都在苦苦掙扎,尋找各種過時的食譜和HowTo頁面......在日食論壇帖子中,有人引用了這個頁面,這對我來說很合適。 (氧氣,純E4獨立的RCP應用程序)

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

即使壽它似乎很奇怪,你必須有一個與設置各種標誌運行Eclipse工作臺的應用程序,運行時,它支付任何注意你的項目設置之前,您應用程序在調試器中。