Hi guys, anyone who could bring me a little bit light into understanding firebase crashlytics on iOS...
j
Hi guys, anyone who could bring me a little bit light into understanding firebase crashlytics on iOS / CrashKiOS?
I'm just testing it and don't understand one thing. Is firebase somehow do extra processing of the stacktrace ? Or am I doing some stupid mistake in configuration/setup ? Just throwing manually an exception to kill the app. Crashlytics console
Copy code
0  FirebaseCrashlytics            0x32328 FIRCLSProcessGetThreadState + 300
1  FirebaseCrashlytics            0x31730 FIRCLSProcessRecordThread + 392
2  FirebaseCrashlytics            0x314c8 FIRCLSProcessRecordAllThreads + 164
3  FirebaseCrashlytics            0x21c3c FIRCLSHandler + 64
4  FirebaseCrashlytics            0x187dc __FIRCLSExceptionRecord_block_invoke + 172
5  libdispatch.dylib              0x1b7ec _dispatch_client_callout + 16
6  libdispatch.dylib              0x118c0 _dispatch_lane_barrier_sync_invoke_and_complete + 56
7  FirebaseCrashlytics            0x1695c FIRCLSExceptionRecord + 332
8  FirebaseCrashlytics            0x17eac FIRCLSCatchAndRecordActiveException(std::type_info*) + 728
9  DrivikoDev                     0x14e0eb0 co_touchlab_crashkios_crashlytics_FIRCLSExceptionRecordNSException_wrapper134 + 296
10 DrivikoDev                     0xd8afe8 kfun:com.jibru.driviko.shared.attachExceptionListener$1.invoke#internal + 78 (AppInit.ios.kt:78)
11 DrivikoDev                     0xd8b230 kfun:com.jibru.driviko.shared.attachExceptionListener$1.$<bridge-DNN>invoke(kotlin.Throwable){}#internal + 74 (AppInit.ios.kt:74)
12 DrivikoDev                     0x165d02c kfun:kotlin.Function1#invoke(1:0){}1:1-trampoline + 1 ([K][Suspend]Functions:1)
13 DrivikoDev                     0x1535aac Kotlin_runUnhandledExceptionHook + 178 (RuntimeUtils.kt:178)
14 DrivikoDev                     0x16b2e54 (anonymous namespace)::processUnhandledException(ObjHeader*) + 10
15 DrivikoDev                     0x16b29b4 (anonymous namespace)::TerminateHandler::kotlinHandler() + 2924
16 FirebaseCrashlytics            0x16510 kfun:androidx.compose.ui.scene.ComposeScene#sendPointerEvent(androidx.compose.ui.input.pointer.PointerEventType;kotlin.collections.List<androidx.compose.ui.scene.ComposeScenePointer>;androidx.compose.ui.input.pointer.PointerButtons;androidx.compose.ui.input.pointer.PointerKeyboardModifiers;androidx.compose.ui.geometry.Offset;kotlin.Long;kotlin.Any?;androidx.compose.ui.input.pointer.PointerButton?){}androidx.compose.ui.scene.PointerEventResult-trampoline + 168
17 libc++abi.dylib                0x11bdc std::__terminate(void (*)()) + 768
18 libc++abi.dylib                0x15314 __cxa_get_exception_ptr + 4004
19 libc++abi.dylib                0x152bc __cxxabiv1::failed_throw(__cxxabiv1::__cxa_exception*) + 228
20 DrivikoDev                     0x16b76ec (anonymous namespace)::ExceptionObjHolderImpl::ExceptionObjHolderImpl(ObjHeader*) + 156
21 DrivikoDev                     0x16b76ac ExceptionObjHolder::Throw(ObjHeader*) + 124
22 DrivikoDev                     0x25c01a8 kfun:androidx.compose.ui.scene.BaseComposeScene#sendPointerEvent(androidx.compose.ui.input.pointer.PointerEventType;kotlin.collections.List<androidx.compose.ui.scene.ComposeScenePointer>;androidx.compose.ui.input.pointer.PointerButtons;androidx.compose.ui.input.pointer.PointerKeyboardModifiers;androidx.compose.ui.geometry.Offset;kotlin.Long;kotlin.Any?;androidx.compose.ui.input.pointer.PointerButton?){}androidx.compose.ui.scene.PointerEventResult + 44 (Trace.uikit.kt:44)
So can't asy anywhere my ViewModel, so trying to investigate it more. Generating my own NSException manually with the stack addresses and result is exactly same. However if I try to symobilacte stacktraces address manually. I get exactly what I'm looking for
Copy code
kfun:kotlin.Throwable#<init>(kotlin.String?){} (in DrivikoDev) (Throwable.kt:30)
kfun:kotlin.Exception#<init>(kotlin.String?){} (in DrivikoDev) (Exceptions.kt:23)
kfun:kotlin.RuntimeException#<init>(kotlin.String?){} (in DrivikoDev) (Exceptions.kt:34)
kfun:kotlin.IllegalStateException#<init>(kotlin.String?){} (in DrivikoDev) (Exceptions.kt:70)
kfun:com.jibru.driviko.shared.ui.dev.DevHomeViewModel#onCrashTestClicked(){} (in DrivikoDev) (DevHomeViewModel.kt:66)
kfun:com.jibru.driviko.shared.ui.dev.DevHomeEventHandler#onCrashTestClicked(){}-trampoline (in DrivikoDev) (DevHomeViewModel.kt:26)
kfun:com.jibru.driviko.shared.ui.dev.DevHomeScreen$$inlined$Column$$FUNCTION_REFERENCE_FOR$onCrashTestClicked$3.invoke#internal (in DrivikoDev) (Column.kt:54)
kfun:com.jibru.driviko.shared.ui.dev.DevHomeScreen$$inlined$Column$$FUNCTION_REFERENCE_FOR$onCrashTestClicked$3.$<bridge-DN>invoke(){}#internal (in DrivikoDev) (Column.kt:54)
kfun:kotlin.Function0#invoke(){}1:0-trampoline (in DrivikoDev) ([K][Suspend]Functions:1)
kfun:androidx.compose.foundation.ClickableNode#onPointerEvent(androidx.compose.ui.input.pointer.PointerEvent;androidx.compose.ui.input.pointer.PointerEventPass;androidx.compose.ui.unit.IntSize){} (in DrivikoDev) (Clickable.kt:1014)
What am I missing here ? Why the firebase crashlytics doesn't show me the stacktrace I'm looking for and I'm able to recover manually from exactly same NSException ?