У меня есть символическая трассировка стека, которая дает мне головную боль! Раздражающе, я не могу воспроизвести это на любом из наших тестовых устройств, поэтому у меня есть только отчеты о сбоях.Какая библиотека вызывает этот крах?
Application Specific Information:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Invalid type in JSON write (NSURLResponseInternal)'
Last Exception Backtrace: CoreFoundation
0x2ac7af8f __exceptionPreprocess + 126 libobjc.A.dylib
0x3932bc8b objc_exception_throw + 38 CoreFoundation
0x2ac7aed5 -[NSException initWithCoder:] + 0 Foundation
0x2ba218d1 0x2b8ef000 + 632 Foundation
0x2ba23463 ___writeJSONObject_block_invoke + 186 CoreFoundation
0x2ab96f5d __65-[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:]_block_invoke + 92 CoreFoundation
0x2ab96e7f -[__NSDictionaryM enumerateKeysAndObjectsWithOptions:usingBlock:] + 174 Foundation
0x2ba230e3 _writeJSONObject + 414 Foundation
0x2ba2180f _writeJSONValue + 438 Foundation
0x2ba21625 -[_NSJSONWriter dataWithRootObject:options:error:] + 128 Foundation
0x2ba224bf +[NSJSONSerialization dataWithJSONObject:options:error:] + 338 whats-new
0x00315fa3 0xc9000 (WNLoadingView.m:28) whats-new
0x00318683 0xc9000 (WNLoadingView.m:28) whats-new
0x003199fb 0xc9000 (WNLoadingView.m:28) libdispatch.dylib
0x398bc2cf _dispatch_client_callout + 22 libdispatch.dylib
0x398c3a3d _dispatch_barrier_sync_f_invoke + 48 whats-new
0x00319911 0xc9000 (WNLoadingView.m:28) whats-new
0x003185bb 0xc9000 (WNLoadingView.m:28) whats-new
0x0031fac3 0xc9000 (WNLoadingView.m:28) whats-new
0x0031f97f 0xc9000 (WNLoadingView.m:28) whats-new
0x0031dce3 0xc9000 (WNLoadingView.m:28) libdispatch.dylib
0x398bc2e3 _dispatch_call_block_and_release + 10 libdispatch.dylib
0x398c3dff _dispatch_after_timer_callback + 66 libdispatch.dylib
0x398ce173 _dispatch_source_latch_and_call + 1606 libdispatch.dylib
0x398bde15 _dispatch_source_invoke + 212 libdispatch.dylib
0x398c4397 _dispatch_queue_drain + 554 libdispatch.dylib
0x398beaad _dispatch_queue_invoke + 84 libdispatch.dylib
0x398c5f9f _dispatch_root_queue_drain + 394 libdispatch.dylib
0x398c73c3 _dispatch_worker_thread3 + 94 libsystem_pthread.dylib
0x39a20db5 _pthread_wqthread + 668 libsystem_pthread.dylib
0x39a20b08 start_wqthread + 8
Причиной аварии довольно очевидно (и это не мой вопрос!) - я пытаюсь написать, не jsonable объект в данных JSON. Трудная часть точно определяет, где это происходит.
Все ссылки на WNLoadingView.m
являются полным отвлекающим маневром - это линия WNLoadingView
просто @implementation WNLoadingView
и адрес 0xc9000
является лишь отправной точкой нашего двоичном в памяти. Однако 0x00315fa3
выглядит как в нашем пространстве, но я не знаю, как увидеть, что на самом деле есть :)
Вздох.
Моя нынешняя теория заключается в том, что авария происходит в библиотеке, в которой у меня нет отладочной информации (т. Е. Сторонней стороны .a
, связанной с контейнером).
У меня есть два вопроса;
Как я могу использовать эту трассировку стека, чтобы узнать, какая библиотека вызывает это?
или
Если моя теория не верна, кто-нибудь знает другой подход, чтобы попробовать или иметь другую теорию?
Чтобы лучше понять вашу проблему, вы можете ответить на мой вопрос? Позвольте мне сказать, что авария происходит внутри библиотеки некоторых яблоков, например. 'NSJSONSerializationLib', что вы будете делать в этом случае? – sage444
@ sage444 Исключение составляет библиотека Apple, но из-за недопустимых входных данных, переданных моим приложением. Если я смогу узнать, где в моем приложении я передаю данные, которые приводят к сбою, я могу исправить его там (или, по крайней мере, попробовать/поймать его и восстановить). – deanWombourne
ok, теперь я вижу, что этот журнал не полностью символизируется и указывает только на один файл 'WNLoadingView', но не на точный метод line/method. Не достаточно, чтобы начать? – sage444