Приложение iOS вылетает с EXC_BAD_ACCESS, точка останова исключения не указывает на код - PullRequest
0 голосов
/ 11 декабря 2018

Я работаю над обновлением старого проекта для работы на более новых версиях iOS, но у меня все еще возникает сбой на экране запуска с этой ошибкой:

ошибка: ошибка чтения памяти для 0x7c37d3000

И

Поток 4: EXC_BAD_ACCESS (код = 257, адрес = 0x1c7c37d309d)

Чтобы узнатьгде в коде это было, я включил объекты-зомби и установил точку останова для всех исключений.При сбое приложения точка останова не выделяет часть кода, а вместо этого делает следующее:

Изображение навигатора точки останова

Screen Shot

Это что-то говорит о libobjc.A.dylib и libc++abi.dylib, так что я предполагаю, что это не часть моего кода?Кроме того, нажатие на точку останова не приводит меня к месту в коде, как обычно говорят люди.

Вот результат bt в консоли lldb (обратная трассировка):

* thread #4, stop reason = EXC_BAD_ACCESS (code=257, address=0x1c7c37d309d)
  * frame #0: 0x00000007c37d309d

Я читал, что по этой обратной трассировке вы можете определить метод или файл и т. Д., Но в этих выходных данных этого нет.

Как определить, откуда именно в коде возникает эта ошибка?Дайте мне знать, если я должен предоставить что-нибудь еще, так как я новичок в этом сайте.Спасибо!

РЕДАКТИРОВАТЬ: Я, вероятно, должен упомянуть, что приложение симулируется с этим на симуляторе: Ошибка Вот обратный след для этой ошибки:

> * thread #3, stop reason = signal SIGABRT   * frame #0: 0x0000000107d5cb66 libsystem_kernel.dylib`__pthread_kill + 10
>     frame #1: 0x0000000107d96080 libsystem_pthread.dylib`pthread_kill + 333
>     frame #2: 0x00000001012b7405 libclang_rt.tsan_iossim_dynamic.dylib`wrap_pthread_kill + 325
>     frame #3: 0x0000000107b09c45 libsystem_c.dylib`abort + 127
>     frame #4: 0x00000001012b669c libclang_rt.tsan_iossim_dynamic.dylib`wrap_abort + 108
>     frame #5: 0x00000001008d5c0f GiFmojo`inittls + 431
>     frame #6: 0x00000001008d5a32 GiFmojo`runtime.etext + 98
>     frame #7: 0x00000001006fe19c GiFmojo`runtime.rt0_go + 140
>     frame #8: 0x0000000107d93661 libsystem_pthread.dylib`_pthread_body + 340
>     frame #9: 0x0000000107d9350d libsystem_pthread.dylib`_pthread_start + 377
>     frame #10: 0x0000000107d92bf9 libsystem_pthread.dylib`thread_start + 13

Разница в причинах сбоя очень запутанная.

РЕДАКТИРОВАТЬ: Вот скриншот навигатора отладки:

screen shot

EDIT: Я отключил объекты-зомби, и теперь он чередуется между потоками 4 и 5 с ошибкой:

ошибка: ошибка чтения памяти для 0xaeb3f7600

Поток 5: EXC_BAD_ACCESS(код = 257, адрес = 0x20aeb3f7693)

Для темы 5. Есть ли причина для этого?

Ответы [ 3 ]

0 голосов
/ 11 декабря 2018

Попробуйте использовать «Символическую точку взлома» на вкладке «Точки взлома».Очень часто это помогает найти место падения приложения.Надеюсь помочь enter image description here

0 голосов
/ 11 декабря 2018

Кажется, что у вас есть ошибки доступа к памяти, такие как чтение нечитаемого местоположения, запись в нераспределенное (или уже освобожденное) местоположение и т. Д.

Существует методика отладки для такого рода проблем, но этоочень сложно.

Взгляните на этот документ: Включение функций отладки Malloc

Если возможно, начните с malloc guard (обнаружение плохой записи), последним средством является поискнеправильный адрес памяти из вывода журнала malloc.

0 голосов
/ 11 декабря 2018

Эй, возможная проблема - опция отладки-разборки. Можете ли вы

перейти на вкладку отладки -> Рабочий процесс отладки -> Всегда показывать отладочную разборку

и снять эту отметку?

...