Xcode版本是6.1
Unity版本是4.54f1和NGUI 2.6.1

我确定在 UnityEngine 中运行时,在控制台上不会记录任何错误,但是在 iPhone 中运行时,它大约每小时崩溃一次。
我试图使用 dSYM 来跟踪错误,但是我所看到的只是内存地址,我听不懂。

  • unity或Xcode中是否有任何选项可以帮助我避免像这样的崩溃?

    这是我的设置:

    脚本调用优化为"Slow and Safe" 优化级别为"None[-O0]"
  • 什么样的错误会导致类似的崩溃,内存错误?
  • 在我的代码中跟踪错误行的方式。

    线程0崩溃:
    0   libsystem_kernel.dylib          0x37f551fc __pthread_kill + 8
    1   libsystem_pthread.dylib         0x37fbea2e pthread_kill + 54
    2   libsystem_c.dylib               0x37f05ff8 abort + 72
    3   pp                              0x01e2489c mono_handle_native_sigsegv + 312
    4   pp                              0x01e1420c mono_sigsegv_signal_handler + 256
    5   libsystem_platform.dylib        0x37fb9060 _sigtramp + 40
    6   pp                              0x01f10e34 g_logv + 160
    7   pp                              0x01f10e5c g_log + 28
    8   pp                              0x01e18d64 get_numerous_trampoline + 368
    9   pp                              0x01e1c874 mono_aot_create_specific_trampoline + 468
    10  pp                              0x01e26aa4 mono_create_specific_trampoline + 72
    11  pp                              0x01e26f5c mono_create_jit_trampoline_in_domain + 328
    12  pp                              0x01e27088 mono_create_jit_trampoline + 20
    13  pp                              0x01e14604 mono_resolve_patch_target + 504
    14  pp                              0x01e1ddf0 mono_aot_plt_resolve + 452
    15  pp                              0x01e26040 mono_aot_plt_trampoline + 32
    16  pp                              0x016cbae8 generic_trampoline_6 + 120
    17  pp                              0x0162295c m_wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr (mscorlib.dll.s:354297)
    18  pp                              0x01e13ab0 mono_jit_runtime_invoke + 2152
    19  pp                              0x01eb5d60 mono_runtime_invoke + 132
    20  pp                              0x01a01148 MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethod*, MonoObject*, MonoException**) (MonoBehaviour.cpp:933)
    21  pp                              0x01a01284 MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethod*, MonoObject*) (MonoBehaviour.cpp:973)
    22  pp                              0x01a10a34 Scripting::SendScriptingMessage(Unity::GameObject&, char const*, MonoObject*) (Scripting.cpp:147)
    23  pp                              0x01a10b18 Scripting::SendScriptingMessage(Unity::GameObject&, std::string const&, MonoObject*, int) (Scripting.cpp:186)
    24  pp                              0x01c26c6c GameObject_CUSTOM_SendMessage(ReadOnlyScriptingObjectOfType<Unity::GameObject>, ICallString, MonoObject*, int) (UnityEngineGameObject.cpp:343)
    25  pp                              0x01168a54 m_wrapper_managed_to_native_UnityEngine_GameObject_SendMessage_string_object_UnityEngine_SendMessageOptions (UnityEngine.dll.s:51208)
    26  pp                              0x002503f4 m_UIEventListener_OnClick (Assembly-CSharp.dll.s:20588)
    27  pp                              0x0162295c m_wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr (mscorlib.dll.s:354297)
    28  pp                              0x01e13ab0 mono_jit_runtime_invoke + 2152
    29  pp                              0x01eb5d60 mono_runtime_invoke + 132
    30  pp                              0x01a01148 MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethod*, MonoObject*, MonoException**) (MonoBehaviour.cpp:933)
    31  pp                              0x01a01284 MonoBehaviour::InvokeMethodOrCoroutineChecked(ScriptingMethod*, MonoObject*) (MonoBehaviour.cpp:973)
    32  pp                              0x01a10a34 Scripting::SendScriptingMessage(Unity::GameObject&, char const*, MonoObject*)
    (Scripting.cpp:147)
    33  pp                              0x01a10b18 Scripting::SendScriptingMessage(Unity::GameObject&, std::string const&, MonoObject*, int) (Scripting.cpp:186)
    34  pp                              0x01c26c6c GameObject_CUSTOM_SendMessage(ReadOnlyScriptingObjectOfType<Unity::GameObject>, ICallString, MonoObject*, int) (UnityEngineGameObject.cpp:343)
    35  pp                              0x01168a54 m_wrapper_managed_to_native_UnityEngine_GameObject_SendMessage_string_object_UnityEngine_SendMessageOptions (UnityEngine.dll.s:51208)
    36  pp                              0x0025e990 m_UICamera_ProcessTouch_bool_bool (Assembly-CSharp.dll.s:26704)
    37  pp                              0x0025d75c m_UICamera_ProcessTouches (Assembly-CSharp.dll.s:26229)
    38  pp                              0x0025c594 m_UICamera_Update (Assembly-CSharp.dll.s:25808)
    39  pp                              0x0162295c m_wrapper_runtime_invoke_object_runtime_invoke_dynamic_intptr_intptr_intptr_intptr (mscorlib.dll.s:354297)
    40  pp                              0x01e13ab0 mono_jit_runtime_invoke + 2152
    41  pp                              0x01eb5d60 mono_runtime_invoke + 132
    42  pp                              0x01961f8c scripting_method_invoke(ScriptingMethod*, MonoObject*, ScriptingArguments&, MonoException**) (ScriptingBackendApi_Mono.cpp:199)
    43  pp                              0x01a0cb30 ScriptingInvocationNoArgs::Invoke(MonoException**) (ScriptingInvocationNoArgs.cpp:95)
    44  pp                              0x01a0caec ScriptingInvocationNoArgs::Invoke() (ScriptingInvocationNoArgs.cpp:79)
    45  pp                              0x01a003a8 MonoBehaviour::CallUpdateMethod(int) (MonoBehaviour.cpp:612)
    46  pp                              0x01a003c0 MonoBehaviour::Update() (MonoBehaviour.cpp:617)
    47  pp                              0x0194b884 void BaseBehaviourManager::CommonUpdate<BehaviourManager>() (Behaviour.cpp:156)
    48  pp                              0x0194bc50 BehaviourManager::Update() (Behaviour.cpp:172)
    49  pp                              0x019d2be4 PlayerLoop(bool, bool, IHookEvent*) (Player.cpp:1895)
    50  pp                              0x017cda74 UnityPlayerLoop (LibEntryPoint.mm:239)
    51  pp                              0x017925bc -[UnityAppController(Rendering) repaint] (UnityAppController+Rendering.mm:55)
    52  pp                              0x017923b0 -[UnityAppController(Rendering) repaintDisplayLink] (UnityAppController+Rendering.mm:34)
    53  QuartzCore                      0x2facb9ca CA::Display::DisplayLinkItem::dispatch() + 94
    54  QuartzCore                      0x2facb774 CA::Display::DisplayLink::dispatch_items(unsigned long long, unsigned long long, unsigned long long) + 340
    55  IOMobileFramebuffer             0x326c176a IOMobileFramebufferVsyncNotifyFunc + 102
    56  IOKit                           0x2e363a72 IODispatchCalloutFromCFMessage + 246
    57  CoreFoundation                  0x2d641e1e __CFMachPortPerform + 134
    58  CoreFoundation                  0x2d64c9dc __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE1_PERFORM_FUNCTION__ + 32
    59  CoreFoundation                  0x2d64c976 __CFRunLoopDoSource1 + 342
    60  CoreFoundation                  0x2d64b14a __CFRunLoopRun + 1394
    61  CoreFoundation                  0x2d5b5c22 CFRunLoopRunSpecific + 518
    62  CoreFoundation                  0x2d5b5a06 CFRunLoopRunInMode + 102
    63  GraphicsServices                0x322a527e GSEventRunModal + 134
    64  UIKit                           0x2fe59044 UIApplicationMain + 1132
    65  pp                              0x000cde78 main (main.mm:28)
    66  pp                              0x000cdd54 start + 36
    
  • 最佳答案

    跟踪的第3行 mono_handle_native_sigsegv 表示您正在尝试访问NULL对象。

    如果您没有在编辑器中看到此信息,但是在设备上看到了,请记住,不同设备上的时序会有所不同。可能由于时序差异,导致问题的行在对象在编辑器中无效之前被调用,而在设备上之后被调用。

    您似乎在响应OnClick消息时发生了它。

    10-07 19:49
    查看更多