2010-02-09 39 views
3

我最近一直在搞多媒體庫SFML。我自然使用C#,所以我去了.Net綁定,你可以從最新的2.0版本的SVN中獲取。經過一段時間,我發現我的應用程序有時會在使用Text對象時掛斷,該對象用於繪製紋理字體。系統特定的錯誤查找?

通過使用探查器和全能Windows任務管理器進一步調查發現,使用文本的簡單應用程序似乎在某種程度上泄漏了內存。然後,我在SFML論壇上發表了一篇文章(the thread)。但是,SFML的主要開發人員無法重現他機器上的錯誤。以爲我不能發瘋,我把它發給了一位朋友,他說他確實看到了這件事。

我爲Laurent,SFML的開發者做了一個例子,但他仍然無法重現該錯誤。考慮到這可能與操作系統有關,我將文件發送給我可以查詢他們操作系統的所有人。下面是我的結果:

http://spreadsheets.google.com/ccc?key=0AhcHeJlLGEVUdG1TTi1mTkFxeFlHYVRISXhjbFBDUmc&hl=en

正如你所看到的,TURC和K7都具有相同的操作系統,但它並沒有在K7的(表崩潰不完整,其中測試考生沒有不還在)。無論如何,這告訴我,這顯然不是一個操作系統問題。

所以我的實際問題是,除了操作系統或架構可以影響像這樣的錯誤之外,還有哪些其他因素只出現在某些系統上?

供參考,在這裏我把我朋友的文件: http://dl.dropbox.com/u/3310651/MemLeak2.rar

和概要我做的截圖: http://dl.dropbox.com/u/3310651/sfml_memleak.png

謝謝!

+0

忘了提及,它似乎是垃圾回收相關的問題。 – 2010-02-09 19:44:19

+0

我很好奇......從C++的角度來看,使用結構作爲類的佔位符而不是使用類...只是瀏覽代碼,並且跨過了我的腦海...有什麼區別... – t0mm13b 2010-02-12 00:30:30

回答

0

經過一段時間談論IRC和各位幫助我,我想出了它。本地庫不是線程安全的,因此在分配和釋放被引用對象的同時存在問題。

1

我不確定可能會導致差異的原因,但考慮到您可以在計算機上重現問題,一個選項是調查爲什麼所有Text對象都處於懸停狀態。你可以通過使用「sos」調試庫和查詢來找出什麼是生根文本對象。在Visual Studio中使用sos的一個很好的介紹可用here

如果您只有Express版本的Visual Studio,則可以使用WinDbg調試器中的sos,該調試器是Debugging Tools for Windows的一部分。另一個適用於使用sod和WinDbg的好概述可以在here找到。

+0

非常感謝,很遺憾,我的IDE(VC#Express)不支持... http://msdn.microsoft.com/en-us/library/yy6d2sxs.aspx – 2010-02-10 23:29:58

+0

添加了一些關於在Visual Studio外部使用sos的信息,希望這有助於 – Dave 2010-02-11 00:53:54

相關問題