시스템 별 버그 사냥?
-
19-09-2019 - |
문제
나는 최근에 엉망이되었습니다 SFML, 멀티미디어 도서관. C#을 사용하므로 자연스럽게 .NET 바인딩을 사용하여 최신 2.0 버전으로 SVN에서 가져올 수 있습니다. 잠시 엉망이 된 후 나는 텍스트 객체를 사용할 때 텍스처 글꼴을 그리는 데 사용되는 텍스트 객체를 사용할 때 내 응용 프로그램이 때때로 끊어 질 것임을 알았습니다.
Profilers와 전능하신 Windows Task Manager를 사용한 추가 조사에 따르면 텍스트를 사용한 간단한 응용 프로그램은 어떻게 든 메모리를 유출하는 것처럼 보였습니다. 그런 다음 SFML 포럼에서 그것에 대해 스레드를 만들었습니다.실). 그러나 SFML의 주요 개발자는 그의 컴퓨터의 버그를 재현 할 수 없었습니다. 내가 미쳤다 고 생각하면서 나는 그것을 친구에게 보냈고 그는 그가 실제로 일어나는 것을 보았다고보고했다.
나는 SFML의 개발자 인 Laurent의 예를 만들었지 만 여전히 버그를 재현 할 수 없었습니다. 이것이 OS와 관련이있을 수 있다고 생각하면서, 나는 내가 할 수있는 모든 사람에게 파일을 보냈고 그들의 OS에 대해 질문했다. 내 결과는 다음과 같습니다.
http://spreadsheets.google.com/ccc?key=0AHCHEJLLGEVUDG1TTI1MTKFXEFXFLHYVRISXHJBFBDUMC&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
감사!
해결책 2
나는 IRC와 사람들이 나를 도와 준 후 잠시 후 그것을 알아 냈습니다. 기본 라이브러리는 스레드 안전하지 않았으므로 동시에 참조 된 객체를 할당 및 거래하는 데 문제가있었습니다.
다른 팁
차이점을 일으킬 수있는 이유는 확실하지 않지만 기계에서 문제를 재현 할 수 있습니다. 하나의 옵션은 모든 텍스트 객체가 왜 매달려 있는지 조사하는 것입니다. "SOS"디버깅 라이브러리를 사용하고 쿼리를 사용하여 텍스트 객체를 루팅하는 내용을 찾아서이를 수행 할 수 있습니다. Visual Studio에서 SOS 사용에 대한 좋은 소개를 사용할 수 있습니다. 여기.
Express 버전의 Visual Studio 만있는 경우 WindBG 디버거에서 SOS를 사용할 수 있습니다. Windows 용 도구 디버깅 도구. WINDBG와 함께 SOS를 사용하는 데 맞춰진 또 다른 좋은 개요를 찾을 수 있습니다. 여기.