Понимание отчета о сбое тестового полета (iOS / React-Native / XCode)

#ios #react-native #testflight #crash-reports

#iOS #react-native #testflight #отчеты о сбоях

Вопрос:

У меня есть несколько пользователей, которые тестируют мое приложение react-native с помощью TestFlight. Для нескольких пользователей приложение выходит из строя. Это не приводит к сбою для меня и другого пользователя. TestFlight предоставляет отчеты о сбое, однако я не уверен, как просмотреть какую-либо значимую информацию о них. Мне удалось открыть их с помощью XCode, однако неясно, в чем заключается фактическая ошибка. Ниже приведен скриншот того, что я вижу:

введите описание изображения здесь

Есть ли что-то еще, что мне нужно сделать, чтобы увидеть более подробную информацию об этом отчете о сбое? Все, на что я смотрю, кажется слишком загадочным. Как мне расшифровать, в чем проблема?

Часть моего журнала сбоев:

Похоже, что приложение разбилось Thread 6 . Вот соответствующие части для потока 6:

Тип исключения: EXC_CRASH (SIGABRT) Коды исключений: 0x0000000000000000, 0x0000000000000000 Примечание об исключении: EXC_CORPSE_NOTIFY, вызванный потоком: 6

Обратная трассировка последнего исключения: 0 CoreFoundation
0x193a10878 _exceptionPreprocess 220 (NSException.m:199) 1
libobjc.A.dylib 0x1a7f66c50 objc_exception_throw 60 (objc-exception.mm:565) 2 MyExampleApp003 0x100ad26c8 RCTFatal 668 (RCTAssert. m:145) 3 MyExampleApp003
0x100b4f1a8 -[RCTExceptionsManager reportFatal:стек:идентификатор исключения: suppressRedBox:] 492 (RCTExceptionsManager.mm:76) 4 MyExampleApp003
0x100b4fbe0 -[RCTExceptionsManager reportException:] 1536 (RCTExceptionsManager.mm:145) 5 Ядро
0x193a158f4 вызывает
148 6 Ядро
0x1938ecdf8 — [Вызов NSInvocation] 448 (NSForwarding.m:3389) 7
Ядро 0x1938ed3cc -[NSInvocationinvokeWithTarget:] 80 (NSForwarding.m:3495) 8 Мой
пример app003 0x100b024d8 -[RCTModuleMethod invokeWithBridge:модуль: аргументы:] 460 (RCTModuleMethod.mm:584) 9 Мой пример app003
0x100b0466c facebook::react::invokeInner(RCTBridge *, RCTModuleData*, unsigned int, folly::динамическая константаamp;) 244 (RCTNativeModule.mm: 114) 10 MyExampleApp003 0x100b043d0 operator() 44 (RCTNativeModule.mm:75) 11 MyExampleApp003 0x100b043d0 функция вызова блока в facebook ::react::RCTNativeModule::invoke(unsigned int, folly::dynamicamp;amp;, int) 88 (RCTNativeModule.mm:67) 12libdispatch.dylib 0x19360324c _dispatch_call_block_and_release 32 (инициализация.c:1454) 13 libdispatch.dylib 0x193604db0 _dispatch_client_callout 20 (object.m:559) 14 libdispatch.dylib 0x19360c10c _dispatch_lane_serial_drain 580 (inline_internal.h:2548) 15 libdispatch.dylib 0x19360cc5c _dispatch_lane_invoke 408 (queue.c:3862) 16 libdispatch.dylib 0x193616d78 _dispatch_workloop_worker_thread 708 (queue.c:6601) 17 libsystem_pthread.dylib 0x1dce28804 _pthread_wqthread 276 (pthread.c:2207) 18 libsystem_pthread.dylib 0x1dce2f75c start_wqthread 8

and

Thread 6 name: Thread 6 Crashed: 0 libsystem_kernel.dylib
0x00000001c090f414 __pthread_kill 8 1 libsystem_pthread.dylib
0x00000001dce27b40 pthread_kill 272 (pthread.c:1388) 2
libsystem_c.dylib 0x000000019cd34b74 abort 104
(abort.c:110) 3 libc abi.dylib 0x00000001a806ccf8
abort_message 132 (abort_message.cpp:76) 4 libc abi.dylib
0x00000001a805de4c demangling_terminate_handler() 308
(cxa_default_handlers.cpp:67) 5 libobjc.A.dylib
0x00000001a7f66f64 _objc_terminate() 144 (objc-exception.mm:701) 6
libc abi.dylib 0x00000001a806c0e0
std::__terminate(void (*)()) 20 (cxa_handlers.cpp:59) 7
libc abi.dylib 0x00000001a806c06c std::terminate()
44 (cxa_handlers.cpp:88) 8 libdispatch.dylib
0x0000000193604dc4 _dispatch_client_callout 40 (object.m:562) 9
libdispatch.dylib 0x000000019360c10c
_dispatch_lane_serial_drain 580 (inline_internal.h:2548) 10 libdispatch.dylib 0x000000019360cc5c
_dispatch_lane_invoke 408 (queue.c:3862) 11 libdispatch.dylib 0x0000000193616d78 _dispatch_workloop_worker_thread 708
(queue.c:6601) 12 libsystem_pthread.dylib 0x00000001dce28804
_pthread_wqthread 276 (pthread.c:2207) 13 libsystem_pthread.dylib 0x00000001dce2f75c start_wqthread 8

and

Поток 6 произошел сбой с состоянием потока ARM (64-разрядный): x0: 0x0000000000000000 x1: 0x0000000000000000 x2: 0x0000000000000000 x3: 0x0000000000000000 x4: 0x000000016fab5e90 x5: 0x000000016fab6440 x6: 0x000000000000006e x7: 0x0000000000000700 x8: 0x00000000000005b9 x9: 0x5cfc9b6c2f3b39f6 x10: 0x0000000000000002 x11: 0x0000000000000003 x12: 0x0000000000000000 x13: 0x0000000000000001 x14: 0x0000000000000010 x15:0x0000000000000033 x16: 0x0000000000000148 x17: 0x000000016fab7000 x18: 0x0000000000000000 x19: 0x0000000000000006 x20: 0x0000000000009e13 x21: 0x000000016fab70e0 x22: 0x00000001f3188380 x23: 0x0000000000000000 x24: 0x0000000000000114 x25: 0x000000016fab70e0 x26: 0x0000000281996600 x27
: 0x00000000000000000000 x28: 0x0000000281996600 fp: 0x000000016fab63a0 lr: 0x00000001dce27b40 sp: 0x000000016fab6380 ПК: 0x00000001c090f414 cpsr: 0x40000000 esr: 0x56000080 Размер адресаошибка

** Полный журнал сбоев: **

Из-за ограничений допустимого размера текста в SO я не могу опубликовать свой полный журнал сбоев в соответствии с запросом. Поэтому я ссылаюсь на него здесь: https://paste.ee/p/0uokD#2OQirRwFCrlTAzGMrq8vd90cD2ThlBXk . Если что-то полезное в полном журнале сбоев будет полезно для решения проблемы, я опубликую соответствующие детали здесь.

Мой package.json

Согласно запросу, вот мой файл package.json:

 {
  "name": "MySuperApp",
  "version": "0.0.1",
  "private": true,
  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint ."
  },
  "dependencies": {
    "@react-native-community/masked-view": "^0.1.10",
    "@react-navigation/native": "^5.8.10",
    "@react-navigation/stack": "^5.12.8",
    "react": "16.13.1",
    "react-native": "0.63.3",
    "react-native-gesture-handler": "^1.9.0",
    "react-native-reanimated": "^1.13.2",
    "react-native-safe-area-context": "^3.1.9",
    "react-native-screens": "^2.15.0",
    "react-native-size-matters": "^0.3.1",
    "react-native-sound": "^0.11.0"
  },
  "devDependencies": {
    "@babel/core": "^7.8.4",
    "@babel/runtime": "^7.8.4",
    "@react-native-community/eslint-config": "^1.1.0",
    "babel-jest": "^25.1.0",
    "babel-plugin-transform-remove-console": "^6.9.4",
    "eslint": "^6.5.1",
    "jest": "^25.1.0",
    "metro-react-native-babel-preset": "^0.59.0",
    "react-test-renderer": "16.13.1"
  },
  "jest": {
    "preset": "react-native"
  }
}
 

** Модели и версии iOS: **

Пока, похоже, происходит сбой для всех, кто тестирует. Хотя он очень прерывистый, и, похоже, в основном происходит сбой при нажатии на аудиоклипы. Хотя это случается очень часто:

  • iPhone X 14.2
  • iPhone 8 13.5.1
  • iPad (5-го поколения) 13.6.1
  • iPhone 11 14.2

Комментарии:

1. нужна дополнительная информация. пожалуйста, опубликуйте первые 100 строк отчета о сбое. (или все это, чтобы сохранить повторный запрос)

2. @mr.fixit Пожалуйста, посмотрите Новую ссылку внизу моего сообщения.

3. @kojow7 можете ли вы добавить свой package.json

4. @MuhammadNuman Я добавил свой package.json

5. @kojow7 можете ли вы подтвердить для меня, что аварийные устройства имеют 13 ios или нет?

Ответ №1:

Для отладки подобных ошибок вам следует рассмотреть возможность добавления crash reporter с полным журналом ошибок как для собственных ошибок, так и для ошибок React Native.

Один из лучших репортеров о сбоях, который вы могли бы использовать, — Sentry.

https://docs.sentry.io/platforms/react-native/

При этом у вас также есть возможность добавлять панировочные сухари и отслеживать выпуски.

Sentry позволяет интегрировать с console.error и т. Д., И вы также можете отправить отчет с ошибками, которые вы обнаруживаете в приложении.

Другим вариантом может быть Firebase-crashlytics https://firebase.google.com/docs/crashlytics/get-started

Ответ №2:

В кадре 2 RTCFatal генерируется исключение. Это не перехвачено, поэтому технически приложение останавливается.

Картинка, которую вы вставили, говорит мне, что это как-то связано с facebook::react::invokeInnex... тем, что вызывает [RCTModuleMethod invok...]

Но почему возникает исключение? Откройте журнал сбоев в виде текстового файла, найдите вверху сообщения о содержимом исключения. Так вы приблизитесь к пониманию того, что происходит.

Комментарии:

1. Глядя на текстовый файл, похоже, что это произошло в потоке 6 и, возможно, было «ошибкой размера адреса». Я не уверен, что это значит или где я буду искать ответ в реальном коде.