为什么我们的 Android Crashlytics 调用堆栈不准确?

问题描述 投票:0回答:1

我们在 Unity il2cpp 项目中使用 Firebase 10.7.0。崩溃和异常会显示在 Crashlytics 中。异常按预期工作。但是,崩溃调用堆栈不准确 - 它们与 Unity 的崩溃报告器显示的内容不匹配,而且在任何线程中似乎都没有任何 libil2cpp.so 或 libunity.so 条目。

通过让应用程序故意崩溃,我们可以验证调用堆栈在 Unity 崩溃诊断中看起来是否正确:

Thread 0 (crashed)
0   libc.so                            0x00000000f3e64bac <symbols missing for uuid: 13bc715234d0861084dc092396cf9938> 
1   libunity.so                        0x00000000b43a54e1 Utils_CUSTOM_ForceCrash(DiagnosticsUtils_Bindings::ForcedCrashCategory) 
2   libil2cpp.so                       0x00000000045b71ec (unknown) (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\UnityEngine.CoreModule__3.cpp:0)
3   libil2cpp.so                       0x00000000b3a431f0 UnityEvent_Invoke_mFBF80D59B03C30C5FE6A06F897D954ACADE061D2 (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\UnityEngine.CoreModule__3.cpp:15108)
4   libil2cpp.so                       0x00000000045b71ec (unknown) (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\UnityEngine.CoreModule__3.cpp:0)
5   libil2cpp.so                       0x00000000b3a431f0 UnityEvent_Invoke_mFBF80D59B03C30C5FE6A06F897D954ACADE061D2 (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\UnityEngine.CoreModule__3.cpp:15108)
6   libil2cpp.so                       0x000000000198c63c EventFunction_1_Invoke_m98A8A653E7180305E41F7CFFDDD9D32C63B96FE7_gshared_inline (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\GenericMethods__34.cpp:44326)
7   libil2cpp.so                       0x000000000198c630 EventFunction_1_Invoke_m98A8A653E7180305E41F7CFFDDD9D32C63B96FE7_inline (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\GenericMethods__34.cpp:15124)
8   libil2cpp.so                       0x00000000b0e18644 ExecuteEvents_Execute_TisRuntimeObject_mDC4455B743BE4A6BA46DD741D0E0AB150FF1209A_gshared (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\GenericMethods__34.cpp:42151)
9   libil2cpp.so                       0x0000000004101004 ExecuteEvents_Execute_TisIPointerClickHandler_t77341AA19DE37C26F5F619DE8BD28B70D5A2B5D8_m024FB23AA1DBB1B7A5E1935FA35A1E4FF57AC5F6 (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\Unity.InputSystem__6.cpp:5169)
10  libil2cpp.so                       0x00000000b358d008 InputSystemUIInputModule_ProcessPointerButton_m68284C737796E80096AD8EAD1E0C687577131FE6 (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\Unity.InputSystem__6.cpp:8033)
11  libil2cpp.so                       0x00000000b358c590 InputSystemUIInputModule_ProcessPointer_mD889935190247CE78A8FE68ACA10CDD1C3B43E5D (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\Unity.InputSystem__6.cpp:6936)
12  libil2cpp.so                       0x00000000b3592c50 InputSystemUIInputModule_Process_mD46ECAA34DE552BF7178B12774FDF80ED24FB980 (C:/workspace/workspace/p/Library/Bee/artifacts/Android/il2cppOutput/cpp\Unity.InputSystem__6.cpp:13692)
13  libil2cpp.so                       0x00000000b076b344 il2cpp::vm::Runtime::InvokeWithThrow(MethodInfo const*, void*, void**) 
14  libil2cpp.so                       0x00000000b076b284 il2cpp::vm::Runtime::Invoke(MethodInfo const*, void*, void**, Il2CppException**) 
15  libunity.so                        0x00000000b4566e09 scripting_method_invoke(ScriptingMethodPtr, ScriptingObjectPtr, ScriptingArguments&, ScriptingExceptionPtr*, bool) 
16  libunity.so                        0x00000000b45725bd ScriptingInvocation::Invoke(ScriptingExceptionPtr*, bool) 
17  libunity.so                        0x00000000b457c455 MonoBehaviour::CallUpdateMethod(int) 
18  libunity.so                        0x00000000b4420a29 void BaseBehaviourManager::CommonUpdate<BehaviourManager>() 
19  libunity.so                        0x00000000b44b537f ExecutePlayerLoop(NativePlayerLoopSystem*) 
20  libunity.so                        0x00000000b44b53a1 ExecutePlayerLoop(NativePlayerLoopSystem*) 
21  libunity.so                        0x00000000b44b5583 PlayerLoop() 
22  libunity.so                        0x00000000b45cd87b UnityPlayerLoop() 
23  libunity.so                        0x00000000b45de387 nativeRender(_JNIEnv*, _jobject*) 
24  base.odex                          0x00000000c73869cb <symbols missing for uuid: 0000000000000000000000000000000000000000> 

同一崩溃实例的 Firebase 调用堆栈如下所示:

Crashed: Thread: SIGSEGV  0x0000000000001d86
#00 pc 0x9fbac libc.so (BuildId: 13bc715234d0861084dc092396cf9938)
#01 pc 0xbf7ffffe

当我下载完整的堆栈跟踪时,libil2cpp.so 不会出现在任何线程中。 libunity.so 也没有。都是 libc.so/libutils.so/libart.so/libmonochrome.so。这几乎就像 Crashlytics 跟踪来自不同的进程。唯一暗示它实际上是 Unity 可执行文件的是几个线程中有一些 libunitytuningfork.so 引用。

值得注意的是,Crashlytics 中的 iOS 崩溃是完美的 - 只是 Android 的崩溃是错误的。

我们很乐意继续使用 Unity 崩溃仪表板,但它不会显示 Android 崩溃的每个线程(仅显示崩溃的线程),因此它对于多线程问题不太有用。真的很想让 Crashlytics 正常工作 - 有人见过类似的东西吗?

firebase unity-game-engine crashlytics
1个回答
0
投票

为了确保您每次构建 Android 时都会生成并上传符号?

此步骤作为 iOS 构建过程的一部分自动完成,但 必须为每个 Android 构建运行

如果您还没有这样做过,请尝试一下,看看它如何改变您所看到的内容以及结果与您的期望有多相符。

© www.soinside.com 2019 - 2024. All rights reserved.