Unity 퍼포먼스 리포팅은 예외 데이터를 캡처 및 집계하므로 런타임 도중 일어나는 일을 이해하고 프로젝트를 더 빨리 최적화할 수 있도록 도와줍니다. 예외는 게임이 완성된 빌드로 실행 중인 동안, 그리고 에디터에서 플레이 모드에 있는 동안 서비스 대시보드에 업데이트됩니다.
iOS crash reporting is available to Unity Plus and Pro users as part of the Unity Performance Reporting service. Turn on Performance Reporting to track crashes on iOS, including crashes in native user code, engine code, and plug-ins.
퍼포먼스 리포팅 설정에 대한 설명은 Unity 문서고를 참조하십시오.
IL2CPP를 사용하고 iOS 플레이어 설정 Script Call Optimization 설정이 Fast but no exceptions 로 설정된 경우, iOS 크래시 보고에서 확인되지 않은 관리 예외로 인한 크래시를 캡처합니다.
See documentation on iPhone Optimization for more information on the Script Call Optimization settings.
보고서에는 크래시된 스레드의 네이티브 스택 추적을 표시합니다. 크래시 원인이 확인되지 않은 관리 예외인 경우, 보고서에는 예외 발생 위치의 관리 스택 추적이 네이티브 스택 추적과 함께 표시됩니다.
iOS 크래시 보고는 애플리케이션 메모리 부족으로 운영체제에 의해 종료되어 발생하는 크래시를 캡처할 수 없습니다.
Unity 클라우드 개발자 대시보드에서 크래시를 확인할 수 있습니다. 대시보드에서 게임을 선택하고 Enable Game Performance 를 선택해야 합니다(그림 A 참조).
다음은 관리 예외로 인해 발생한 크래시에 대한 보고서의 형태를 보여주는 보고서 예입니다.
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)