문제

장비를 사용하여 누출 위치를 찾으려고 노력하고 있지만, 내가 본 누출은 다음 그림과 같습니다.

누출

보시다시피 어떤 코드 줄이 정확히 유출되고 있는지에 대한 정보는 없습니다.내가 겪은 모든 누수(약 20개)는 이렇습니다. 즉, 누수에는 특별히 내 코드의 어떤 줄도 표시되지 않습니다.

이 그림의 누출은 CoreFoundation의 "_CFAllocatorSystem"(???)과 관련이 있으며 간단히 GSEvent라고 말하는 다른 항목도 있습니다.나는 이것을 생성하는 것이 무엇인지 전혀 모릅니다.

어떻게 그걸 알 수 있나요?

어떤 도움을 주셔서 감사합니다.

도움이 되었습니까?

해결책

누출 아래로 실행 한 후 악기에 들어가고 "소스보기"를 선택하고 싶다고 생각합니다. 그런 다음 소스 파일을 기기 창으로 드래그해야합니다. 그런 다음 호출 스택과 함께 누출이 발생하는 코드의 선을 표시합니다.

일부는 내 코드를 던지는 코드가 뷰를 누설합니다. 악기에서는 다음과 같습니다.Alt Text http://img688.imageshack.us/img688/9669/screenshot20091028at131.png

다른 팁

Leaks가 보여주는 것은 누출되는 개체를 할당한 코드에 대한 추적입니다(이는 해당 개체가 유지되지만 응용 프로그램에 해당 주소를 가진 변수가 남아 있지 않음을 의미합니다).표시되지 않는 것은 누수를 일으키지 않기 위해 객체가 릴리스되어야 하는 위치입니다. 왜냐하면 이를 알 수 없기 때문입니다(현재 릴리스가 호출되는 위치를 찾는 것은 가능하지만 그다지 도움이 되지 않을 수 있습니다).

따라서 이 추적이 알려주는 것은 시스템에 의해 할당된 일부 메모리가 사용자에 의해 유지되고 참조가 잊혀졌다는 것입니다. 하나의 키는 타이머 이벤트를 처리하는 스레드에서 흔히 볼 수 있는 "PurpleEvent" 라인입니다. 아마도 알림일 것입니다.알림을 받고 나중에 공개하지 않고 그 내용을 보관할 수도 있습니다.

누수가 발생하는 지점을 알고 있다면 해당 시간 동안 어떤 코드가 실행되고 있는지 격리할 수 있어야 합니다.

보다 여기 특히이 인용문 :

이 목록은 유출 된 객체의 유형, 크기, 주소 및 호출 스택에 대해 알려줍니다.

그런 다음 콜 스택을 통해 유출 된 추억의 소스를 추적 할 수 있습니다.

스택 트레이스는 어떤 라인이 범인인지 정확하게 보여줍니다. 귀하의 경우 Main.M의 14 행. 당신이 무엇에 대해 무엇을 혼란스럽게하는지 모르십니까?

유죄는 가속도계였으며 OS 3.0을 위해 컴파일하고 있습니다.

다시 말해, 애플이 누출이 고정되어 있다고 말한 가속도계는 여전히 지옥처럼 새고있다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top