문제

Apple의 Xcode 개발 환경은 메모리 누출 감지를위한 도구를 제공합니까?

특히 iPhone SDK에 적용되는 도구에 관심이 있습니다. 현재 취미 프로그래밍 프로젝트를위한 내가 가장 좋아하는 플랫폼

상기 도구에 대한 문서/튜토리얼은 매우 도움이 될 것입니다.

도움이 되었습니까?

해결책

구체적으로 호출되는 것이 있습니다 Leaks 그리고 이전 포스터가 말했듯이, 가장 쉬운 방법은 Xcode에서 바로 다음과 같습니다.

실행 -> 성능 도구로 시작 -> 누출

그것은 메모리 누출을 감지하는 데 매우 능숙한 것처럼 보이며, 나와 같은 비 C 헤드가 알아 내기가 쉬웠습니다.

다른 팁

고르다 Profile ~로부터 Product Xcode 6의 메뉴는 Apple의 악기 도구를 시작합니다. (응용 프로그램은 Xcode 응용 프로그램의 패키지 내용 내부에 있습니다. /Applications/Xcode.app/Contents/Applications/)

상업적인 대안은 OmniobjectMeter. (Omni 그룹에 의해 중단)

그만큼 Clang Static Analyser C, C ++ 및 Objective-C 코드에서 버그를 찾는 데 유용합니다.

다음은 Xcode의 악기를 사용하여 iOS/Mac 응용 프로그램의 메모리 누출/성능을 감지하는 링크입니다.Xcode에서 기기를 실행하는 단계

Xcode 내에서 도구를 실행할 수 있습니다 menu -> run -> start with performance tool -> ...

Apple의 Xcode 개발 환경은 메모리 누출 감지를위한 도구를 제공합니까?

특히 iPhone SDK에 적용되는 도구에 관심이 있습니다.

예. 애플은 이것을 "악기"라고 부릅니다 (메모리 도구 이상).

애플을 참조하십시오 Introduction to Instruments User Guide. 특히, 참조하십시오 Locating Memory Issues in Your App. 메모리 지향 추적 템플릿을 사용하는 방법의 예를 제공합니다.

Objectalloc과 Mallocdebug는 모두 당신에게 도움이되어야합니다. 전체 SDK를 설치 한 경우 개발자-> 응용 프로그램-> 성능 도구에서 찾을 수 있습니다.

그들의 이름은 당신에게 그들의 기능에 대해 꽤 좋은 단서를 제공합니다. OA, 객체가 생성하고 MA가 일반적인 메모리 누출 도구입니다.

나는 아직 iPhone 개발로 시도하지 않았지만 그들이 거기에서도 작동 할 것이라고 믿어야합니다.

ADC iPhone Developer 사이트에 등록했다고 가정하면 다음과 같은 링크가 있습니다.Instruments User Guide

사용할 때 rustyshelf's solution 시뮬레이터가 아닌 iPhone에서 테스트하십시오. 메모리 사용량은 크게 다릅니다.

메인 메모리 누출 도구를 요약했습니다. iphone-essential-performance-tools-list

Xcode Insturments로 시작하기위한 간단한 튜토리얼도 시도해보십시오.

메모리 누출 도구 : http://www.raywenderlich.com/2696/

기초적인: http://www.raywenderlich.com/23037/how-to-use-instruments-in-xcode

enter image description here

1 단계. 할당 기기를 선택하십시오

  1. 할당을위한 프로파일 링 템플릿을 선택하십시오.

enter image description here

  1. 기본 계측기 인터페이스에서 VM 추적기를 클릭하고 현재의 경우 삭제 키를 누르십시오.

enter image description here

오른쪽 상단의 플러스 버튼을 클릭하면 다양한 종류의 테스트를 위해 더 많은 악기를 추가 할 수 있지만이 튜토리얼에서는 다루지 않습니다.

2 단계. 기기 설정을 설정하십시오

분석을 실행하기 전에해야 할 일이 몇 가지 있습니다. 먼저 앱을 설치 한 iOS 장치를 연결해야합니다. iOS 시뮬레이터는 여전히 시뮬레이터이며 앱에서 메모리 사용을 정확하게 나타내지 않을 수 있으므로 물리적 장치 여야합니다.

목표를 선택하려면 클릭하십시오 내 컴퓨터 상단 근처에서 장치 위로 가져간 다음 하위 메뉴에서 앱을 선택하십시오.

enter image description here

다음으로 볼당 유형의 설정을 변경할 수있는 패널이 있습니다. 확인하는 것 외에 생성되고 영구적입니다 거품이 확인되며 미리해야 할 일은 많지 않습니다.

enter image description here

단계 3. 레코드를 눌러 기기를 실행합니다

왼쪽 상단의 레코드 버튼을 누르면 앱이 장치에서 시작되며 악기는 할당 차트를 차트로 시작합니다. 여기서해야 할 일은 앱을 통해 실행되며 가능한 문제 영역에 중점을 두어 더 많은 메모리가 할당되는 것보다 더 많은 메모리가 할당되는지 확인합니다. 이것은 많은 반복적 인 작업을 수행한다는 의미 일 수 있지만 나중에 스스로에게 감사 할 것입니다.

당신은 다음과 같은 것을보아야합니다.

enter image description here

앱을 한 번 실행하고 메모리의 안정적인 지점에 도달하는 것이 좋으므로 유명한 기준이 높아질 수 있습니다. 만족되면 테스트 할 데이터가 충분하면 왼쪽 상단의 정지 버튼을 누릅니다.

단계 4. 분석

  1. 내가하는 첫 번째 일은 기준선의 총 영구 바이트를 측정하도록 검사 범위를 설정하는 것입니다. 이 지속적인 바이트 번호는 할당 요약 바로 아래에 있습니다.

enter image description here

실제로 검사 범위를 설정하려면 키보드 바로 가기를 사용하십시오. 명령 왼쪽 검사 범위 및 명령> 올바른 검사 범위. 우리의 앱에는 약 20MB의 기준선이 있습니다.

enter image description here

  1. 그런 다음 올바른 검사 범위를 앱을 다시 실행하고 루트로 돌아온 지점으로 이동합니다. 여기서 메모리가 거의 동일하다는 것을 알 수 있습니다. 따라서이 작업을 몇 번 더 수행하고 메모리가 기준으로 돌아 오는 것을 보면 주요 메모리 문제가 없다고 가정 할 수 있습니다.

enter image description here

여기서 다루지 않는이 데이터를 분석하는 방법에는 여러 가지가 있지만 데이터를보고 분석하는 방법의 전체 드롭 다운 메뉴가 있습니다.

enter image description here

단계 5. 세대 마킹

검사 범위를 다루지 않기를 원한다면 Mark Generation이라는 기능이 있습니다. 오른쪽 악기 패널에 버튼이 있습니다.

enter image description here

이 버튼은 검사 라인의 위치에 따라 계측기 타임 라인의 포인트를 표시합니다. 이전 마크 이후로 모든 할당을 추적하거나 다른 마크가없는 경우 처음부터이를 수행합니다. 할당 기기를 실행할 때 또는이 예제에서와 같이 달리기를 중지 한 후 세대를 표시 할 수 있습니다.

enter image description here

6 단계. 스택 추적을 확인하십시오

마지막으로 다루어야 할 것은 스택 추적을보고 있습니다. 이를 위해 검사 범위를 설정하여 모든 할당을 강조한 다음 통계보기를보고 생성되고 영구적입니다 버블은 오른쪽 패널에서 선택됩니다. 통계보기에서 영구 바이트가 가장 높은 것에서 최저로 정렬되어 있는지 확인하십시오. 여기에는 많은 할당이 있으며, 많은 일이 시스템 할당이기 때문에 무슨 일이 일어나고 있는지 이해하기가 어려울 수 있습니다.

enter image description here

깊숙이

  1. 가장 큰 할당을보고 오른쪽을 향한 화살표를 클릭하십시오. 당신이 클릭 한 것들 안에는 많은 시간이있을 것이며 그들 중 많은 사람들이 당신에게 의미가 없을 것입니다.

enter image description here

  1. 화살표를 클릭 한 후 다양한 할당을 강조하면 오른쪽 패널의 확장 된 세부 사항을 계속 살펴보십시오. 결국 프로젝트에서 실제 코드로 이어지는 대담한 텍스트를 발견하여 문제가 무엇인지 알려줍니다.

enter image description here

  1. 스택 추적의 굵은 항목 중 하나를 두 번 클릭하면 실제 코드로 이동합니다 (소유 한 앱에 할당을 실행했다고 가정).

enter image description here

  1. 이보기에는 유용한 것들이 많이 있습니다. 하나는 각 메소드가 호출되는 메모리의 양을 보여주는 오른쪽에 대부분 노란색 태그입니다. 모든 앱이 다르므로 개발자 인 개발자는 강조 표시된 방법이 문제인지, 최적화 할 수있는 것인지 또는 앱의 피할 수없는 부분 만 결정해야합니다.

  2. 제 경우에는 UICOLOR 변수가 앱 전체에 지속적이고 사용되는 것이므로 앱의 수명 내내 허용됩니다.

여기에서 찾았습니다

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