Version: 2017.2
Collaborate のトラブルシューティングのヒント
Performance Reporting の設定

Unity Performance Reporting

Unity の Performance Reporting は例外データを見つけて集め、ランタイムに何が発生しているかを理解するのに役立ち、プロジェクトをより早く最適化します。例外はゲームが完成したビルドとして実行されている間やエディターで再生モードの間に Services Dashboard に更新されます。

Services Dashboard
Services Dashboard

iOS クラッシュレポート

iOS クラッシュレポートは、Unity Performance Reporting の一部として Unity Plus と Pro のユーザーに提供されています。Performance Reporting を有効にすると、ネイティブユーザーコード、エンジンコード、プラグインのクラッシュなど、iOS のクラッシュを追跡します。

Performance Reporting の設定 に関する詳細は、Unity のドキュメントを参照してください。

IL2CPP を使用し、iOS Player SettingsScript Call OptimizationFast but no exceptions に設定すると、iOS クラッシュレポートは、キャッチされないマネージ例外によるクラッシュを見つけます。

Script Call Optimization の設定に関しては、iPhone の最適化 を参照してください。

レポート

レポートにはクラッシュしたスレッドのネイティブスタックトレースが表示されます。クラッシュがキャッチされないマネージ例外によって発生した場合、レポートには、ネイティブスタックトレースとともに、例外の発生元のマネージスタックトレースも表示されます。

iOS クラッシュレポートでは、アプリケーションがメモリ不足になり、オペレーティングシステムによって閉じられたことによるクラッシュを捉えることはできません。

Unity Cloud Developer Dashboard にクラッシュが表示されます。ここでゲームを選択し、 Enable Game Performance (図 A) を選択します。

図 A: Unity Cloud Developer Dashboard の Game Performance オプション
図 A: Unity Cloud Developer Dashboard の 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 に変更
Collaborate のトラブルシューティングのヒント
Performance Reporting の設定