Xcode版本是6.1
Unity版本是4.54f1和NGUI 2.6.1
我确定在 UnityEngine 中运行时,在控制台上不会记录任何错误,但是在 iPhone 中运行时,它大约每小时崩溃一次。
我试图使用 dSYM 来跟踪错误,但是我所看到的只是内存地址,我听不懂。
这是我的设置:
脚本调用优化为
"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消息时发生了它。