Unity の Performance Reporting は例外データとネイティブなクラッシュを見つけて収集します。これにより、ランタイムに何が発生しているかを理解し、プロジェクトをより早く最適化することができます。例外は、ゲームが完成したビルドで実行される場合とエディターで再生モードの場合に Services Dashboard で更新されます。
Performance Reporting を有効にして、ネイティブユーザーコード、エンジンコード、プラグインのクラッシュなどのクラッシュを追跡するための詳細は、 Performance Reporting の設定 を参照してください。
ネイティブクラッシュレポートは、Unity Performance Reporting の一部として Unity Plus と Pro のユーザーに提供されています。
プラットフォーム | 可能な Unity エディター (以下のバージョン以降) |
---|---|
iOS | 5.6 |
Android | 2017.2 |
MacOS | 2017.3 |
Windows | 2018.1 |
IL2CPP を使用し、iOS Player Settings の Script Call Optimization を Fast but no exceptions に設定すると、iOS クラッシュレポートは、キャッチされないマネージ例外によるクラッシュを見つけます。
Script Call Optimization 設定に関する情報は、iPhone Optimization を参照してください。
レポートにはクラッシュしたスレッドのネイティブスタックトレースが表示されます。クラッシュがキャッチされないマネージ例外によって発生した場合、レポートには、ネイティブスタックトレースとともに、例外の発生元のマネージスタックトレースも表示されます。
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)