Unity Performance Reporting captures and aggregates exception data, to help you understand what’s happening during run time and to optimize your project faster. Exceptions are updated to the Services Dashboard while the game is running as a completed build, and while in Play Mode within the Editor.
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.
See Unity documentation for guidance on setting up Performance Reporting.
使用 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)