2009-10-27 6 views
2

악기 누출,하지만 난 거기에 볼 수있는 누수는 다음 사진에서 사람 같다 :IPHONE : 분석 나는 악기를 사용하여 누수를 찾기 위해 노력하고

leaks

으로 당신이 볼 수 있습니다 정확히 어떤 코드 줄이 누출되었는지에 대한 정보는 없습니다. 내가 가지고있는 모든 누수는 약 20 개 정도입니다. 즉, 누수가 특히 내 코드의 행을 표시하지 않습니다.

이 그림의 누출은 CoreFoundation의 "_CFAllocatorSystem"(???)과 관련이 있으며 단순히 GSEvent라고 말하는 다른 사람이 있습니다. 나는 이것들을 생성하는 것에 대한 단서가 없다.

어떻게 발견 할 수 있습니까?

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

답변

1

누출 상태에서 실행 한 후 계측기에 들어가서 "소스보기"를 선택하고 싶습니다. 그런 다음 소스 파일을 인스트루먼트 창으로 드래그해야합니다. 그런 다음 누수가 호출 스택과 함께 발생하는 코드 줄을 표시합니다.

일부 코드를 내 보내면보기가 누출됩니다. 인스트루먼트에서 다음과 같이 보입니다. alt text http://img688.imageshack.us/img688/9669/screenshot20091028at131.png

+0

감사! 그게 최고야 !!!!!!!! – SpaceDog

0

here 특히이 견적을 참조하십시오

이 목록은 그들의 호출 스택을 누출 된 객체의 유형, 크기, 주소에 대해 알려합니다.

그런 다음 호출 스택을 통해 유출 된 메모리 소스를 추적 할 수 있습니다.

스택 추적은 정확히 어떤 줄이 범인인지를 보여줍니다. 분명히 main.m에 14 번째 줄이 있습니다. 너 혼란스러워 하는게 뭔지 알아?

+0

죄송합니다. 문제는 해결 방법이 없습니다. 제가 게시 한 이미지를 클릭 했습니까? 내 이미지가 너의 것과 거의 같지 않고 객체 유형, 크기, 주소 및 호출 스택이 무엇을 생성 하는지를 알 수는 없다는 것을 알고 있습니다. – SpaceDog

+0

템플릿으로 생성 된 아이폰 프로젝트를 꽤 많이 본다면 main.m : 14는 자동 릴리즈 풀이 비어있는 라인 일뿐입니다. 실제로 누수 소스에 대해서는 아무 의미도 없습니다. . –

+0

및 main.m : 14는 전체 응용 프로그램에 "이 응용 프로그램에 대한 링크가 있습니다"와 같은 점을 표시하지만이 사실을 알고 있습니다. – SpaceDog

1

누수가 나타내는 것은 누출 된 개체를 할당 한 코드 (즉, 유지되지만 응용 프로그램에 해당 주소가있는 변수가 남아 있지 않음)에 대한 추적입니다. 그것이 당신에게 보여주지 않는 것은 누출을 일으키지 않기 위해 물체가 놓여 져야만하는 곳입니다. 그것은 알기가 불가능하기 때문에 (현재 릴리스가 어디에서 있는지를 발견 할 수 있지만 그렇게 도움이되지는 않을 것입니다).

그래서이 추적에서 말하는 것은 시스템에 의해 할당 된 일부 메모리가 사용자에 의해 유지되고 그 다음 잊어 버린 참조입니다. 하나의 키는 스레드 처리에서 일반적으로 사용되는 "PurpleEvent"라인입니다 타이머 이벤트 또는 알림. 나중에 알림을받지 않고 알림을 받고 보관할 수 있습니다.

누수가 어느 시점에서 발생했는지 알면 그 시간 동안 실행중인 코드를 격리 할 수 ​​있어야합니다.

0

유죄는 가속도계이며 OS 3.0 용으로 컴파일됩니다.

다른 말로하면, 애플이 누수가 수정되었다고 말하는 가속도계는 여전히 지옥처럼 새고있다.

관련 문제