Version: 2017.3
콜라보레이트 문제 해결 팁
퍼포먼스 리포팅 설정

Unity 퍼포먼스 리포팅

Unity 퍼포먼스 리포팅은 예외 데이터 및 네이티브 크래시 보고서를 캡처 및 집계하여 런타임 도중에 일어나는 일을 이해하고 프로젝트를 더 빨리 최적화하는 데 도움이 됩니다. 예외는 게임이 완성된 빌드로 실행 중인 동안, 그리고 에디터가 재생 모드인 동안 서비스 대시보드에 업데이트됩니다.

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

퍼포먼스 리포팅을 활성화하여 네이티브 사용자 코드, 엔진 코드, 플러그인 등에서의 크래시를 추적하는 방법은 퍼포먼스 리포팅 설정을 참조하십시오.

네이티브 크래시 보고 유효성

네이티브 크래시 보고는 Unity Plus 및 Unity Pro 사용자에게 Unity 퍼포먼스 리포팅 서비스의 일부로 제공됩니다.

플랫폼 사용 가능한 최소 버전
iOS 5.6
Android 2017.2
MacOS 2017.3
Windows 2018.1

iOS 크래시 보고

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

스크립트 호출 최적화 설정에 대한 자세한 내용은 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)

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