Version: 2017.1
콜라보레이트 문제 해결 팁
Unity 퍼포먼스 리포팅(Performance Reporting) 설정

Unity 퍼포먼스 리포팅(Unity Performance Reporting)

Unity 퍼포먼스 리포팅은 예외 데이터를 캡처 및 집계하므로 런타임 도중 일어나는 일을 이해하고 프로젝트를 더 빨리 최적화할 수 있도록 도와줍니다. 예외는 게임이 완성된 빌드로 실행 중인 동안, 그리고 에디터에서 플레이 모드에 있는 동안 서비스 대시보드에 업데이트됩니다.

서비스 대시보드
서비스 대시보드

iOS 크래시 보고

iOS 크래시 보고는 Unity Plus 및 Pro 사용자에게 Unity 성능 보고 서비스의 일부로 제공됩니다. 네이티브 사용자 코드, 엔진 코드 및 플러그인 크래시 등 iOS의 크래시를 추적하려면 퍼포먼스 리포팅을 켜야 합니다.

퍼포먼스 리포팅 설정에 대한 설명은 Unity 문서고를 참조하십시오.

IL2CPP를 사용하고 iOS 플레이어 설정 Script Call Optimization 설정이 Fast but no exceptions 로 설정된 경우, iOS 크래시 보고에서 확인되지 않은 관리 예외로 인한 크래시를 캡처합니다.

Script Call Optimization 설정에 대한 자세한 내용은 iPhone 최적화 문서를 참조하십시오.

보고서

보고서에는 크래시된 스레드의 네이티브 스택 추적을 표시합니다. 크래시 원인이 확인되지 않은 관리 예외인 경우, 보고서에는 예외 발생 위치의 관리 스택 추적이 네이티브 스택 추적과 함께 표시됩니다.

iOS 크래시 보고는 애플리케이션 메모리 부족으로 운영체제에 의해 종료되어 발생하는 크래시를 캡처할 수 없습니다.

Unity 클라우드 개발자 대시보드에서 크래시를 확인할 수 있습니다. 대시보드에서 게임을 선택하고 Enable Game Performance 를 선택해야 합니다(그림 A 참조).

그림 A: Unity 클라우드 개발자 대시보드의 Game Performance 옵션
그림 A: Unity 클라우드 개발자 대시보드의 Game Performance 옵션

예제

다음은 관리 예외로 인해 발생한 크래시에 대한 보고서의 형태를 보여주는 보고서 예입니다.


Managed Stack Trace:

at CrashTests.CrashNextUpdate () [0x00000] in <filename unknown>:0

at CrashTests.Update () [0x00000] in <filename unknown>:0

Native StackTrace:

Thread 0 (crashed)

0 crashreporttest CrashedCheckBelowForHintsWhy() (CrashReporter.mm:106)

1 crashreporttest UnhandledExceptionEventHandler_Invoke_m689053609 (mscorlib_System_Delegate3660574010.h:79)

2 crashreporttest RuntimeInvoker_Void_t2779279689_Il2CppObject_Il2CppObject(MethodInfo const*, void*, void**) (Il2CppInvokerTable.cpp:405)

3 crashreporttest il2cpp::vm::Runtime::CallUnhandledExceptionDelegate(Il2CppDomain*, Il2CppDelegate*, Il2CppObject*) (Runtime.cpp:350)

4 crashreporttest il2cpp::vm::Runtime::UnhandledException(Il2CppObject*) (Runtime.cpp:440)

5 crashreporttest ScriptingInvocationNoArgs::Invoke(ScriptingException**) (ScriptingInvocationNoArgs.cpp:131)

6 crashreporttest ScriptingInvocationNoArgs::Invoke() (ScriptingInvocationNoArgs.cpp:95)

7 crashreporttest MonoBehaviour::CallUpdateMethod(int) (MonoBehaviour.cpp:541)

8 crashreporttest void BaseBehaviourManager::CommonUpdate<BehaviourManager>() (Behaviour.cpp:169)

9 crashreporttest PlayerLoop(bool, bool, IHookEvent*) (Player.cpp:1721)

10 crashreporttest UnityPlayerLoopImpl(bool) (LibEntryPoint.mm:240)

11 crashreporttest UnityRepaint (UnityAppController+Rendering.mm:238)

12 crashreporttest -[UnityAppController(Rendering) repaintDisplayLink] (UnityAppController+Rendering.mm:54)

13 QuartzCore CA::Display::DisplayLinkItem::dispatch()

14 QuartzCore CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long)

15 IOKit IODispatchCalloutFromCFMessage

16 CoreFoundation __CFMachPortPerform

17 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__

18 CoreFoundation __CFRunLoopDoSource1

19 CoreFoundation __CFRunLoopRun

20 CoreFoundation CFRunLoopRunSpecific

21 GraphicsServices GSEventRunModal

22 UIKit UIApplicationMain

23 crashreporttest main (main.mm:32)

  • 2017–09–04 일부 편집 리뷰를 거쳐 페이지 수정됨
  • Unity 5.5에서 Capture Editor Exceptions 설정을 추가하고 Optimize game performance 토글 레이블 이름을 Discover app errors 로 변경
콜라보레이트 문제 해결 팁
Unity 퍼포먼스 리포팅(Performance Reporting) 설정