티스토리 뷰

공부

Xcode ) Instruments - Common Tasks (2)

Zedd0202 2018. 5. 6. 15:23
반응형

안녕하세요 :) Zedd입니다.

Common Tasks의 나머지 세 챕터들을 보겠습니당 키키

< About Instruments >

< Instruments - Common Tasks (1)>

을 읽고오세요 XD 



Target Devices and Processes


trace document를 사용하여 무언가를 프로파일하려면,  target을 지정해야합니다. 즉, 프로파일링 하고자 하는 target과 device 또는 시뮬레이터와 같이 프로ㅓ퍼파일링 하고자하는 위치를 Instruments에게 알려주어야합니다.

새 trace document를 생성하면, trace document는 프로파일링 템플릿 선택 dialog를 표시합니다. 이 dialog의 맨 위에는 target device목록과 target process목록이 포함되어 있어, 템플릿을 선택할 때 원하는 target을 지정 할 수 있습니다. 이러한 목록에는 시뮬레이터를 비롯하여, Mac에 구성되거나 연결된 모든 device와 이러한 device에서 프로파일링에 사용 할 수 있는 모든 프로세스가 포함됩니다. 최근 target process, app extensions, active processes(활성 프로세스), system processes(시스템 프로세스)도 나열됩니다.


Figure 7-1Target device and process lists in the profiling template selection dialog

중요 : OpenGL ES Analyzer Instrument 및 GPU Driver Instrument와 같은 일부 iOS 관련 악기는 iOS 시뮬레이터에서 실행할 수 없으므로, 실제 device(physical device)에서 실행해야합니다.


ㅇㅋ


target 목록은 모든 trace document의 툴바에서도 사용 할 수 있으므로, trace document에서 작업하는 동안 언제든지 target을 변경 할 수 있습니다.


To target a device and a process
1. target device목록 또는 target process목록을 클릭하고, 원하는 device 및 process를 선택하세요.



일부 instruments를 사용하면, 모든 프로세스를 대상으로 지정 할 수 있습니다. 이 작업을 수행하려면 target process목록에서 "All Processes"를 클릭하세요.


원하는 process가 목록에 없으면, target process목록에서 "Choose Target"을 선택하세요. 그러면 모든 process를 탐색 할 수 있는 dialog가 표시됩니다. 이 dialog를 통해 process의 환경 변수를 구성 할 수도 있습니ㅏㄷ.


TIP : 타켓팅한 앱의 프로파일을 시도했지만, 앱이 실제로 실행되고 있지 않으면, Instruments는 자동으로 실행합니다. 

(그니까 뭐 시뮬레이터든 디바이스든 그게 켜져있고, 앱이 실행중이 아니면 켜지는데!!!! 뭐 시뮬레이터를 끈다거나 연결을 안했다거나 그러면 

이게 뜨니까, 꼭 일단 시뮬레이터든 디바이스든 연결은 연결해놔야합니다.(시뮬레이터의 경우에는 "켜져있어야"합니다.))


Target an iOS Device

iOS device를 타겟팅하려면, device를 개발 Mac에 연결합니다. 연결되면 다음과 같이 device가 target device목록에 나타납니다.


note : Instrument를 사용하여 iOS device를 프로파일링 하기 전에, device를 개발용으로 준비해야 데이터를 수집 할 수 있습니다. 프로비저닝에 대한 자세한 내용은 App Distribution Guide의 Creating Development Provisioning Profiles를 참고하세요.


Target an iOS Device Wirelessly

Instruments를 사용하면, iOS Device에서 무선으로 데이터를 수집 할 수도 있습니다. 

무선 프로파일링은 다음을 테스트 할 때 특히 유용( especially useful )합니다.


● Accelerometers. Move the device in all directions without its being tethered. (가속도계. device를 (끈으로 묶지않고) 모든 방향으로 이동 합니다.)

● Accessories. Plug your USB accessory into the free slot and test it. (부속품?..악세서리. USB액세서리를 빈 슬롯에 꽂은 다음 테스트하세요. 이게 왜 유용한 점이죠?;;;;;;;;1번은 이해하지만 이건 뭐지...)


To enable an iOS device for wireless profiling
1.  iOS device가 USB또는 Lightning 케이블로 개발 Mac에 연결되어 있는지 확인하세요. 



2. Option키를 누르고, Device목록을 클릭하세요.
3. 무선 프로파일링을 사용하려면, 모바일 Device를 선택하세요.



4. target device목록을 다시 클릭하여, device의 무선(wireless)버전을 선택하고, process를 선택하세요.


5. USB 또는 Lightning 케이블에서 device를 분리하세요. 이제 device에서 process를 무선으로 프로파일링 할 수 있습니다,.


note : 무선으로 device를 ㅁ프로파일링 하는 동안, device의 전원을 끄면(powering off), 데이터 수집이 중지됩니다. 데이터 수집을 다시 시작하려면, 컴퓨타에 다시 연결해야합니다.허거걱




Target an Apple Watch

오..애플와치를 프로파일링 한다는 생각은 못해봤네용ㅇ

Instruments와 함께 Apple Watch를 타겟팅하기 전에 먼저 프로파일 링을 위해 Apple Watch를 준비해야합니다. (ㅎㅎ....실패)


To prepare an Apple Watch for profiling
1. Apple Watch가 개발 iPhone과 pair를 하도록 하세요. (페어링?말하는 듯............? Ensure that your Apple Watch is paired with your development iPhone.)
2. Instruments를 종료하세요.
3. Xcode를 시작하세요.
4. Apple Watch와 pair된 iPhone을 USB또는 Lightning 케이블로 개발 Mac에 연결하세요.


5. Window> Devices를 선택하거나 Shift-Command-2를 눌러 Xcode의 Devices 윈도우를 엽니다. 
6. iPhone이 Devices (장치) 목록에 나타날 때까지 기다립니다.
7. Apple Watch가 iPhone 용 페어링 된 device로 나타날 때까지 기다리세요.
8. Xcode가 Apple Watch가 준비되었음을 나타낼 때까지 기다리세요. 이 프로세스는 몇 분이 걸릴 수 있습니다.

9. iPhone을 USB 또는 Lightning 케이블에서 분리하세요.

10. iPhone을 USB 또는 Lightning 케이블에 다시 연결하세요. (..?)


Apple Watch가 프로파일링을 준비하면, Instruments를 다시 시작하고, 다음 ㄷ그림과 같이 Apple Watch가 target device목록에 나타나게 됩니다.


note : Apple Watch를 프로파일 링 할 때, 개발 iPhone은 Watch와 Instruments 사이의 정보를 중계하는 프록시 역할을합니다.



Other Ways to Target

이 챕터에서는 Instruments에서 target앱 및 device를 지정하는 방법을 배웠습니다. 그러나 Instruments 앱을 직접 입력하지 않고도, 외부에서 앱을 타겟팅 할 수 있습니다. 자세한 내용은 곧 나옵니다.ㅇ





Access and Use Individual Instruments


trace document내에서 instruments로 알려진 각 데이터 수집 모듈은 시간 경과에 따라, 앱, process(이제 그냥 프로세스라고 할게요..), device에 대한 데이터를 수집합니다. 각 instruments는 파일 액세스, 메모리 사용 또는 네트워크 활동과 같은 특정 타입의 정보를 수집하고 표시합니다. instruments는 대부분의 개발자의 요구를 충족시키도록 설계된 광범위한 instruments 라이브러리를 포함합니다. 그러나 고오급 개발자는 DTrace를 사용하여 다른 타입의 데이터를 수집하는 자체적인 사용자 지정 instruments를 개발할 수도 있습니다(..)


note : iTunes, DVD 플레이어 및 QuickTime을 사용하는 앱과 같은 일부 Apple앱은 중요하거나 저작권이 보호된 데이터를 보호하기 위해 DTrace를 통한 데이터 수집을 방지합니다. 


(그래서 DTrace가 뭔데......뭐 곧 나오겠죠?.)



Display the Library Palette

라이브러리 팔레트에는 trace document에 추가 할 수 있는 모든 instruments를 표시됩니다. 라이브러리에는 내장 된 모든 instruments와 정의한 모든 사용자 정의 instruments가 포함되어 있습니다. 아니 했던 말을 계속하네


Command-L이나 +버튼 ㄱ 

< Instruments - Common Tasks (1)>글에서도 언급됐었는데...그때는 안알랴주더니 지금 알려주네



Find Instruments in the Library Palette

라이브러리 팔레트의 instruments목록은 특히 사용자 지정 instruments를 추가한 경우 매우 길어집니다. 라이브러리 팔레트의 하단에 있는 filter field를 사용하여 이름, 설명 또는 키워드를 기반으로 특정 instruments를 빠르게 찾을 수 있습니다ㅣ. 

Change the Library View Mode

라이브러리 팔레트의 instruments는 이름과 설명이 있거나 없는 아이콘으로 볼 수 있습니다. 라이브러리 팔레트는 하단의 아이콘 View 버튼(image: ../Art/icon_library_palette_iconview_2x.png)을 클릭하여, 각 instrument의 아이콘만 표시하세요.. 각 instrument의 아이콘, 이름ㅇ 및 설명을 다시 표시하려면 image: ../Art/icon_library_palette_listview_2x.png버튼을 클릭하세요.


오옹


Add an Instrument to a Trace Document

템플릿이나 "Blank"를 기반으로하는 trace document를 만들었더라도(템플릿 선택 dialog 맨처음에 Blank라고 있음), 기능을 확장하기 위해, ㄱ새 instruments를 추가 할 수 있습니ㅏㄷ.


To add an instrument to a trace document
1. 원하는 trace document를 엽니다.
2. 라이브러리 팔레트를 표시합니다.(Command-L이나 +버튼 누르기ㄱ)
3. 원하는 instrument를 찾으세여ㅛ.
4. 라이브러리 팔레트에서 instrument를 trace document의 strategy pane에 원하는 위치로 드래그하세요.
4번이 무슨말인지 모르겠...지만 친절하게 그림으로 설명해줍니다.

 그러하다


Remove an Instrument from a Trace Document

지우는 법!!
trace document에서 작업 할 때, 더이상 필요하지 않은 instruments를 쉽ㄷ게 제거 할 수 있습니다.

To remove an instrument from a trace document
1. 원하는 trace document를 엽니다.
2. strategy pane에서 삭제할 instrument를 선택합니다.
3. Delete키를 누르거나, Instrument > Delete instrumentname Instrument를 클릭하세요. 



4. 메세지가 표시되면, 확인을 클릭하여 instrument를 정말로 제거할 것인지 확인하세요.


Configure an Instrument’s Record Settings

Instruments는 일반적으로 trace document에 추가하는 즉시 사용 할 수 있습니다. 그러나 어떤 경우에는  Instruments의 설정을 사용자 정의 해야 할 수도 있습니다. 예를들어, Allocations instrument의 샘플링 속도를 조정하거나 free memory(사용가능한 메모리?)에 대한 이벤트를 삭제(discard)할 수 있습니다. 이러한 설정은 Instruments에 따라 사용자 지정 가능합니다. 많은 Instruments에는 Instruments자체에서 수집하는 정보 타입을 결정하기 위한 컨트롤이 포함되어 있습니다. inspector pane의 record settings area에서 이러한 설정을 조정 할 수 있습니다.(< Instruments - Common Tasks (1)>글에서 inspector pane을 설명했었죠?)


Figure 8-4Record settings for the Activity Monitor instrument

Configure an Instrument’s Display Settings

trace를 기록한 후, Instruments는 Detail pane에 결과를 표시합니다. 이러한 결과는 Instruments마다 다릅니다. 요약, 호출트리(call tree), 샘플 리스트와 같은 요소가 포함 될 수 있습니다. 흔히 많은 데이터가 여기에 표시되며, 탐색ㄷ하는데 시간이 오래 걸릴 수 있습니다. Instruments에는 적절한 정보를 신ㅅ혹하게 얻을 수 있도록(종종 Instruments마다 다름) 디스플레이된 정보를 조정하고 필터링 할 수 있습니다. Instruments가 이러한 작업을 지원하면 inspector pane의 display settings area에 나타납니다. Timeline pane의 내용 구성 옵션도 여기에서 찾을 수 있습니다. 


Figure 8-5Display settings for the Activity Monitor instrument


Record, Pause, and Stop Traces

Instruments는 실행 중에 앱에 대한 정보를 수집합니다. 이 챕터에서는 Instruments가 정보를 수집하도록 지시하는 방법을 설명합니다. 

헉 드디어 사용법이...!!!!!!!


Record a Trace

앱을 프로파일링 할 준비가 되면, Record(녹화, 녹음 같은 뜻이 있지만..."기록"이라고 번역하겠습니당ㅎㅎ)을 시작합니다. 기록을 하는 동안 trace document의 instruments는 구성(configurations)에 따라 앱을 모니터링 합니다. 기록이 진행됨에 따라, Timeline pane과 Detail pane이 업데이트 되어 캡쳐된 내용을 실시간으로 볼 수 있습니다.


To begin recording
다음 중 한가지를 따르세요.
1. trace document toolbar의 Record 버튼(image: ../Art/inline_record_button_2x.png)을 클릭하세요.
2. Command-R(녹화를 중지하려면 다시  Command-R을 누르면댐)

Set Recording Options

trace document에서 데이터 수집을 향상시키기 위해, record 옵션을 설정하세요. 

기록을 하기 전에 지연(delay), 기록할 시간의 길이, 저장할 데이터의 양 또는 지연모드(deferred mode)에서 데이터를 기록할지 여부를 선택합니다. 


To set the recording options for a trace
1. File > Record Options을 클릭하여 Record Options dialog를 엽니다.



2. 원하는 대로 설정을 사용자 정의 하세요. 

옵션에는 다음이 포함됩니다.

● Time limit(시간제한)instruments가 데이터를 기록하는 최대시간(초) 입니다.

● Window limit(window?..제한) : 저장할 데이터의 최대 지속 시간(초). window 제한으로, 지정한 시간보다 오래(예: 4초이상) 계속 기록하면, 마지막 4초동안 수집된 데이터만 저장됩니다. (처음 4초가 아니라 마지막 4초군요..)

● Deferred mode(지연 모드) : 데이터 수집이 완료 될 때까지 데이터 분석을 연기하려면 선택하세요. 이로 인해 기록되는 프로세스에서 더 많은 시스템 리소스가 처리되기 때문에, 보다 빠르고 정확한 데이터 수집이 가능합니다.


note : trace document의 instruments 또는 instruments의 기본 설정 구성에 적용 할 수 없는 경우, 이 option dialog중 일부옵션이 비활성화 될 수 있습니다. 옵션이 사용 중지 된 이유를 확인하려면, 몇초동안 마우스를 올려놓으세요. 툴팁이 표시됩니다. window limit은 OS X 10.7이상 및 iOS 5이상에서 지원됩니다. 

3. OK를 클릭하여 record option dialog를 닫으세요. 

+) 근데 지금 해보면, 그니까 File > Record Options을 들어가면,


좀 다르게 뜨는데...밑 부분이 우리가 방금 배운거랑 비슷하네요?..뭔가 많이 추가됐음 ㅎㅁㅎ

2016년 9월이 마지막 업데이트긴 했지만, Instruments는 뭔가 큰 영향을 안받을 것 같아서 괜찮겠지 했는데..역시나.....요새 애플 문서 볼때마다 이 업데이트 속도에 한숨을 쉬게 되네요ㅜㅜ문서 업데이트 해주세요. 


Pause a Trace

필요한 경우, 기록을 일시중지하고, 나중에 다시 시작 할 수 있습니ㅏㄷ. 


To pause an active recording
여러 방법이 있지만ㅌ 위에서 말했듯이 Command-R을 누르거나 trace document toolbar의 (image: ../Art/inline_pause_button_2x.png) 를 클릭하세요.

Stop a Trace

원하는 데이터를 기록 한 후, 기록을 중지하면 수집된 데이터를 분석 할 수 있습니다.


To stop an active recording
trace document toolbar의 (image: ../Art/inline_stop_button_2x.png)를 클릭 ㄱ


아까 위에서





이렇게 말했죠? 이제 나옵니당. 



Profile from the Dock

Dock의 Instruments 앱 아이콘에서 Time Profiler를 실행하여, 백그라운드에서 특정 이벤트를 자동으로 기록 할 수 있습니다. 


To collect Time Profiler information from the Dock
1. Instruments을 연 상태에서 Dock의 Instruments아이콘을 컨트롤을 누른채 클릭하세여ㅛ. 
2. 나타나는 Shortcut메뉴로 부터, 프로파일링 할 프로세스를 선택하여 기록을 시작하세요. 

옵션에는 다음이 포함됩니다.


● System Time Profile : 모든 시스템 프로세스 프로파일링을 시작합니다. 

● Time Profile Specific Process : 하위 메뉴에서 특정 앱을 사용하여 TimeProfiler Instruments를 시작합니다. 

 Automatically Time Profile Spinning Applications :  나중에 차단된(spinning) 앱을 자동으로 프로파일링 합니다.

● Allow Tracing of Any Process (10 hours) : 다음 10시간 내에 발생할 모든 프로세스를 추적합니다. 10시간 동안 암호를 입력하지 않아도 됩니다.(?)


note : 이 방식으로 기록된 데이터는 .dtps타입으로, ~ / Library / Application Support / Instruments / Unimported /에 저장됩니다.



Profile from Xcode

Instruments는 Xcode개발 워크 플로우의 핵심 구성 요소이며, 앱을 빌드하고 테스트 할 때, Xcode내에서 직접 시작 할 수 있습니다.

Profile from the build and product menus

Xcode 빌드 메뉴를 사용ㄹ하면, 앱을 실행, 테스트 및 분석 할 수 있습니다. 또한 Instruments로 앱을 프로파일링 할 수 있습니다. 


To profile your app from the Xcode build and product menus
1. 앱 프로젝트를 엽니다. 
2. 다음 중 하나를 수행합니다. 
2-1 ) 



를 클릭하거나 Command-I누르셈
Instruments가 시작되고 프로파일링 템플릿 선택 dialog가 나타납니다. 앱이 target device및 process목록에서 자동으로 선택됩니다. 


To use a default template when profiling from the Xcode build and product menus(Xcode빌드 및 product메뉴에서 프로파일링 할 때 기본 템플릿을 사용ㄹ하려면) 
1. Xcode 앱 프로젝트를 엽니다.
2. 다음 중 한가지 방법으로  scheme editor dialog를 엽니다. 

또는



3. scheme editor dialog의 사이드바에서 "Profile"을 클릭하세요.


4. Instrument 팝업 메뉴에서 원하는 프로파일링 템플릿을 선택하세요.



5. Close버튼을 클릭하세요.
이제는 앱을 프로파일 할 때 마다 선택한 템플릿이 자동으로 열리고, 프로파일링이 시작됩니다. 



Profile from Xcode gauges while debugging

Xcode debug navigator에는 테스트하고, 디버깅 할 때, 앱을 모니터링 하는 여러 게이지가 포함되어 있습니다 이 게이지는 CPU사용량, 메모리 및 에너지 영향을 비롯한 다양한 요소를 추적하며, 성능, 전력소비 등에 영향을 줄 수 있는 잠재적 문제를 경고합니다. 앱을 테스트 하는 동언, 추후에 조사하고자하는 추세를 확인하면, 보다 자세한 분석을 위해 모니터링을 Instruments로 전환할 수 있습니다. (이것도...< Instruments - Common Tasks (1)>글에서 한건데, 추가정보가 더 있으니 계속 읽어주세요!)


자, 앱을 빌드하면 debug navigator에서 


요런거를 볼 수 있죠? 오른쪽 main editor에서 "Profile in Instruments"을 클릭하면 됩니다.

모든 Xcode게이지에 "Profile in Instruments"버튼이 있는건 아닙니다. 예를들어,  Energy Impact게이지에는 Instruments에서 다양한 타입의 프로파일링 세션을 시작하기 위한 몇가지 버튼이 있습니다. 

아무튼 "Profile in Instruments"버튼을 클릭하면 

이런 프롬프트가 뜨게 됩니다. 현재 실행중인 앱 인스턴스를 Instruments로 전송할지, 또는 App을 중지하고 Instruments를 사용하여 앱의 새 인스턴스를 시작할지 선택하세요ㅣ.

두 경우 모두, Xcode가 앱 프로파일링, Instruments 실행 및 프로파일링을 중비합니다. 세션을 전송(transfer)하기로 선택한 경우, Instruments는 현재 상태로 앱을 프로파일링 하기 시작합니다. 


커맨드라인으로 하는방법은 건너뛰겠습니당. 나는 꼭 커맨드라인을 써서 하고싶다!!!!하시는 분들은 여기에 가셔서 "

Profile from the Command Line"를 읽어주세요!


Minimize Instruments Impact on Data Collection

Instruments는 데이터수집에 미치는 영향을 최소화 하도록 설계되었습니다. 그러나 몇가지 기본 설정을 변경하여 Instruments가 데이터 수집에 미치는 영향을 더욱 줄일 수 있습니다.

더 많은 데이터를 숟집하기 위해, 여러 Instruments의 샘플 간격(interval) dmf 줄일 수 있습니다. 그러나 짧은 샘플 간격으로 인해 높은 샘플 속도(rate)가 발생하면, 몇가지 문제가 발생 할 수 있습니ㅏㄷ.


모든 샘플에 프로세서 시간이 필요합니다. 높은 샘플 rate는 더 많은 프로세서 시간을 사용합니다. Processor time is required for every sample.

샘플 간격(interval)타이밍이 일치하지 않을 수 있습니다. 인터럽트는 각 샘플을 시작하는데 사용됩니다. 이러한 인터럽트가 발생할 때의 변화는 매우 작은 샘플 간격을 사용 할 때 샘플 속도(rate)에 상당한 변화를 일으킬 수 있습니다. 

작은 샘플 간격으로 인해, 더 많은 샘플이 수집됩니다. 각 샘플은 시스템 메모리를 사용하며, 많은 수의 샘플이 메모리가 적은 컴퓨터에서 사용가능한 메모리를 빠르게 사용합니다. 


Run Instruments in Deferred Mode

테스트 중인 앱을 종료할 때 까지, 데이터 분석을 연기(deferring)하여 성능관련 데이터의 정확성을 높입니다. 일반적으로 Instruments는 앱 실행중에 데이터를 분석하고 표시하므로 수집된 데이터를 볼 수 있습니다. 실시간 분석?(analysis live)을 수행하면 CPU시간과 메모리를 소비하여 대상 프로세스 속도가 느려지므로, 프로세스가 정상적으로 작동하는 방식을 반영하지 못할 수 있습니다. Instrument를 지연모드(deferred mode)로 실행하면, 앱 실행이 끝나거나 Stop을 클릭한 후, 데이터 수집이 완료될 때 까지 데이터 분석이 지연됩니다. 지연모드에 있는 동안, 데이터를 수집하는 instruments와의 상호작용이 차단됩니다.

지연모드에서, instruments는 데이터 수집을 완료한 후, 데이터를 처리하고 화면에 표시합니다. 데이터 분석 연기(Deferring data analysis )는 데이터 수집 프로세스의 후반 단계에 시간을 추가하지만, 성능관련 데이터가 정확하도록 보장(ensure)합니다.


To set deferred mode for Instruments
1. Instruments> Preferences를 선택하세요.



2. Recording pane에서, "Always use deferred mode”를 선택하세요.


특히 긴 trace의 경우, 지연모드(deferred mode)로 인한 지연(delay)이 중요할 수 있습니다. 매우 정확한 데이터 수집이 필요한 추적(trace)에만 지연모드를 설정하면 지연(delay)를 피할 수 있습니다. (아까 했던거임)


To set deferred mode for a trace




이 옵션은 Instruments preferences에서 "Always use deferred mode"이 활성화 된 경우, 비활성화 됩니다. 
이렇게 Common Tasks챕터가 끝났네요!...진짜 Common Task들밖에 없군........

    반응형