2010-02-09 4 views
3

저는 최근에 멀티미디어 라이브러리 인 SFML을 사용하고 있습니다. 나는 C#을 사용하므로 자연스럽게 .Net 바인딩을 사용했다.이 바인딩은 최신 2.0 버전의 SVN에서 가져올 수있다. 잠시 후 나는 텍스쳐 폰트를 그리는 데 사용 된 Text 객체를 사용할 때 내 응용 프로그램이 끊기는 경우가 있다는 것을 알아 차렸다.시스템 관련 버그 헌팅?

프로필러와 전능 한 Windows 작업 관리자를 사용하여 추가 조사를 실시한 결과, 텍스트를 사용하는 간단한 응용 프로그램이 어떻게 든 메모리를 새고있는 것으로 나타났습니다. 그런 다음 SFML 포럼에서 그것에 관한 스레드를 만들었습니다 (the thread). 그러나 SFML의 주요 개발자는 자신의 컴퓨터에서 버그를 재현 할 수 없었습니다. 내가 미치지 않을 수 있다고 생각해서, 나는 그것을 친구에게 보냈고, 그는 실제로 그것이 일어나는 것을 보았다고보고했다.

SFML의 개발자 Laurent에게 예제를 만들었지 만 버그를 재현 할 수 없었습니다. 이것이 OS와 관련 있다고 생각하면 내가 할 수있는 모든 사람들에게 파일을 보냈고 OS에 대해 질의했다. 여기 내 결과는 : 당신이 볼 수 있듯이

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

는 TURC와 K7 모두 동일한 OS를 가지고 있지만 K7의 (표에 충돌하지 않습니다되는 불완전한 테스트 후보가하지하지 않은 경우 아직 회신하지 않았다). 어쨌든 이것은 OS 문제가 아니라는 것을 분명히 말해줍니다.

내 실제 질문은 입니다. 그러나 OS 나 아키텍처가이 같은 버그에 영향을 줄 수있는 다른 요인은 특정 시스템에서만 나타납니다. http://dl.dropbox.com/u/3310651/MemLeak2.rar

그리고 내가 한 프로파일의 스크린 샷 : http://dl.dropbox.com/u/3310651/sfml_memleak.png

감사 참고로

, 여기에 내가 내 친구를 보낸 파일입니다!

+0

언급하신 것을 잊어 버렸습니다. 가비지 수집 관련 문제인 것 같습니다. –

+0

궁금 해서요 ... C++ 관점에서 클래스를 사용하는 대신 클래스의 자리 표시 자로 구조체를 사용하는 데있어 어떤 차이가 있습니까? 코드를 탐색하면 내 마음을 넘어 ... – t0mm13b

답변

0

나는 IRC와 친구들이 나를 도와 주면서 잠시 후에 알아 냈습니다. 네이티브 라이브러리는 스레드로부터 안전하지 않으므로 참조 된 객체를 동시에 할당 및 할당 해제하는 데 문제가있었습니다.

1

차이점을 유발할 수있는 것은 확실하지 않지만 컴퓨터에서 문제를 재현 할 수 있다면 모든 텍스트 개체가 왜 걸려 있는지 조사하는 것이 좋습니다. "sos"디버깅 라이브러리를 사용하고 쿼리를 통해 Text 객체를 루팅하는 방법을 찾을 수 있습니다. Visual Studio에서 sos를 사용하는 좋은 방법은 here입니다.

Visual Studio의 Express 버전 만있는 경우 Debugging Tools for Windows의 일부인 WinDbg 디버거에서 sos를 사용할 수 있습니다. WinDbg에서 sos를 사용하는 데 적합한 또 다른 좋은 개요는 here입니다.

+0

감사합니다. 슬프게도, 내 IDE (VC# Express)는 지원되지 않습니다 ... http://msdn.microsoft.com/en-us/library/yy6d2sxs.aspx –

+0

Visual Studio 외부에서 sos 사용에 대한 정보가 추가되었으므로 도움이됩니다. – Dave