Unity の Performance Reporting は例外データを見つけて集め、ランタイムに何が発生しているかを理解するのに役立ち、プロジェクトをより早く最適化します。例外はゲームが完成したビルドとして実行されている間やエディターで再生モードの間に Services Dashboard に更新されます。
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.
Performance Reporting の設定 に関する詳細は、Unity のドキュメントを参照してください。
IL2CPP を使用し、iOS Player Settings の Script Call Optimization を Fast but no exceptions に設定すると、iOS クラッシュレポートは、キャッチされないマネージ例外によるクラッシュを見つけます。
See documentation on iPhone Optimization for more information on the Script Call Optimization settings.
レポートにはクラッシュしたスレッドのネイティブスタックトレースが表示されます。クラッシュがキャッチされないマネージ例外によって発生した場合、レポートには、ネイティブスタックトレースとともに、例外の発生元のマネージスタックトレースも表示されます。
iOS クラッシュレポートでは、アプリケーションがメモリ不足になり、オペレーティングシステムによって閉じられたことによるクラッシュを捉えることはできません。
Unity Cloud Developer Dashboard にクラッシュが表示されます。ここでゲームを選択し、 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)