#ios #swift #symbolicate
#iOS #swift #обозначение
Вопрос:
У меня есть производственное приложение, которое прошло проверку, но сбой в работе. Я подключил устройство к Xcode, повторил сбой и извлек журнал сбоев из из Xcode. Проблема в том, что я не понимаю отчет. Для меня это не имеет смысла. Например, он не сообщает мне, в какой строке моего кода происходит сбой моего приложения. Мой вопрос в том, является ли это примером отчета о сбое без символов? Я не знаю, как выглядит отчет с обозначениями и без обозначений, прежде чем я даже подумаю о том, как обозначить отчет о сбое….
согласно документации Apple (Apple Docuemtnation, раздел Введение), поскольку я извлек отчет о сбое из xcode, он должен быть автоматически обозначен символом через несколько секунд??? Если этот отчет обозначен символом, для меня это не имеет смысла. совершенно бесполезно.
Incident Identifier: 8CAEC9EB-016F-42DC-AEB7-DE0EC136F33A
CrashReporter Key: 26676d619a8d0376d5040dfe66f618918964f4d4
Hardware Model: iPhone7,1
Process: mapdocuments [427]
Path:
/private/var/containers/Bundle/Application/AFB5062A-C2A8-4106- 8A28-5B0528918E2D/mapdocuments.app/mapdocuments
Identifier: com.xxxxx.mapdocuments
Version: 13 (1)
AppStoreTools: 10B63
AppVariant: 1:iPhone7,1:12
Code Type: ARM-64 (Native)
Role: Non UI
Parent Process: launchd [1]
Coalition: com.xxxxx.mapdocuments [513]
Date/Time: 2019-03-28 01:52:16.3749 0000
Launch Time: 2019-03-28 01:51:08.0437 0000
OS Version: iPhone OS 12.1.4 (16D57)
Baseband Version: 7.32.00
Report Version: 104
Exception Type: EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000
Exception Note: EXC_CORPSE_NOTIFY
Triggered by Thread: 0
Application Specific Information:
abort() called
Last Exception Backtrace:
0 CoreFoundation 0x1a4531ea4
__exceptionPreprocess 228
1 libobjc.A.dylib 0x1a3701a50
objc_exception_throw 55
2 CoreFoundation 0x1a4438484 [NSException
raise:format:] 115
3 StoreKit 0x1b860fc14 -[SKPaymentQueue
addPayment:] 675
4 mapdocuments 0x100e5c1e8 0x100dfc000
393704
5 mapdocuments 0x100e65ddc 0x100dfc000
433628
6 UIKitCore 0x1d16d2314 -[UIApplication
sendAction:to:from:forEvent:] 95
7 UIKitCore 0x1d115fd54 -[UIControl
sendAction:to:forEvent:] 79
8 UIKitCore 0x1d1160074 -[UIControl
_sendActionsForEvents:withEvent:] 439
9 UIKitCore 0x1d115f074 -[UIControl
touchesEnded:withEvent:] 567
10 UIKitCore 0x1d170ba6c -[UIWindow
_sendTouchesForEvent:] 2471
11 UIKitCore 0x1d170ccd0 -[UIWindow
sendEvent:] 3155
12 UIKitCore 0x1d16ebfcc -[UIApplication
sendEvent:] 339
13 UIKitCore 0x1d17bae38
__dispatchPreprocessedEventFromEventQueue 1619
14 UIKitCore 0x1d17bd830
__handleEventQueueInternal 4739
15 UIKitCore 0x1d17b6320
__handleHIDEventFetcherDrain 151
16 CoreFoundation 0x1a44c20e0
__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ 23
17 CoreFoundation 0x1a44c2060
__CFRunLoopDoSource0 87
18 CoreFoundation 0x1a44c1944
__CFRunLoopDoSources0 175
19 CoreFoundation 0x1a44bc810 __CFRunLoopRun
1039
20 CoreFoundation 0x1a44bc0e0
CFRunLoopRunSpecific 435
21 GraphicsServices 0x1a6735584 GSEventRunModal
99
22 UIKitCore 0x1d16d0c00 UIApplicationMain
211
23 mapdocuments 0x100e02884 0x100dfc000 26756
24 libdyld.dylib 0x1a3f7abb4 start 3
Thread 0 name: Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0 libsystem_kernel.dylib 0x00000001a40c7104
__pthread_kill 8
1 libsystem_pthread.dylib 0x00000001a4143020
pthread_kill$VARIANT$mp 380
2 libsystem_c.dylib 0x00000001a401ed78 abort 140
3 libc abi.dylib 0x00000001a36e8f78
__cxa_bad_cast 0
4 libc abi.dylib 0x00000001a36e9120
default_unexpected_handler 8480 () 0
5 libobjc.A.dylib 0x00000001a3701e58
_objc_terminate 28248 () 124
6 libc abi.dylib 0x00000001a36f50fc
std::__terminate(void (*) 57596 ()) 16
7 libc abi.dylib 0x00000001a36f4cec _
_cxa_rethrow 144
8 libobjc.A.dylib 0x00000001a3701c20
objc_exception_rethrow 44
9 CoreFoundation 0x00000001a44bc14c
CFRunLoopRunSpecific 544
10 GraphicsServices 0x00000001a6735584
GSEventRunModal 100
11 UIKitCore 0x00000001d16d0c00
UIApplicationMain 212
12 mapdocuments 0x0000000100e02884 0x100dfc000
26756
13 libdyld.dylib 0x00000001a3f7abb4 start 4
как показано в Xode:
Комментарии:
1. Вам нужно удалить символы из журнала сбоев, чтобы найти точное название класса или выполнить поиск
SKPaymentQueue addPayment
Может быть, вы что-то там найдете
Ответ №1:
Да, это несимволированный журнал сбоев. Проблема в том, что вызов [-SKPaymentQueue addPayment:]
передал неверный указатель для платежа. Вот что сообщает вам журнал:
Тип исключения: EXC_CRASH (SIGABRT)
и
Информация о конкретном приложении:
вызывается функция abort ()
Это указывает на то, что какой-то фрагмент кода явно вызвал функцию для прерывания запуска приложения. Это происходит потому, что ОС обнаружила, что некоторые неверные данные были переданы функции, и решила, что не может продолжить работу с неверными данными, поэтому единственным выбором было прервать.
Обратная трассировка показывает, какие функции были вызваны, чтобы перейти к прерыванию:
Last Exception Backtrace:
0 CoreFoundation 0x1a4531ea4 __exceptionPreprocess 228
1 libobjc.A.dylib 0x1a3701a50 objc_exception_throw 55
2 CoreFoundation 0x1a4438484 [NSException raise:format:] 115
3 StoreKit 0x1b860fc14 -[SKPaymentQueue addPayment:] 675
4 mapdocuments 0x100e5c1e8 0x100dfc000 393704
5 mapdocuments 0x100e65ddc 0x100dfc000 433628
Они выполняются в порядке, обратном вызову. Итак, некоторый код в mapdocuments
приложении или библиотеке вызывается в StoreKit
фреймворк, в частности -[SKPaymentQueue addPayment:]
метод. Этот метод обнаружил, что переданное значение недопустимо, и вызвал исключение. Исключение не было перехвачено с использованием блока @try
/ @catch
, поэтому ОС прервала выполнение.
К сожалению, поскольку символы не были предоставлены, мы не знаем точную строку, которая вызывалась -addPayment:
с неверными данными. Однако, если вы создали приложение, у вас должны быть символы для него, и я думаю, что с их помощью можно обозначить журнал сбоев. Однако я не делал этого сам.