Подтвердить что ты не робот

Как понять и решить отчет о сбоях: SIGSEGV, SEGV_ACCERR

Я иногда получаю этот отчет о сбое:

Name: SIGSEGV
Reason: SEGV_ACCERR
Stack Trace:

0 MyApp 0x00070456 0x1000 + 455766
1 MyApp 0x0007a34d 0x1000 + 496461
2 MyApp 0x0007a4f1 0x1000 + 496881
3 MyApp 0x000d31dd 0x1000 + 860637
4 MyApp 0x00067f0f 0x1000 + 421647
5 MyApp 0x0005ad69 0x1000 + 367977
6 MyApp 0x000081e3 0x1000 + 29155
7 MyApp 0x00008ae9 0x1000 + 31465
8 CoreFoundation 0x35a547e4 __invoking___ + 68
9 CoreFoundation 0x359af7b1 -[NSInvocation invoke] + 160
10 Foundation 0x3556268f -[NSInvocationOperation main] + 114
11 Foundation 0x354fb393 -[__NSOperationInternal start] + 862
12 Foundation 0x35564793 __block_global_6 + 102
13 libdispatch.dylib 0x348dec59 _dispatch_call_block_and_release + 12
14 libdispatch.dylib 0x348e1817 _dispatch_worker_thread2 + 258
15 libsystem_c.dylib 0x32e0edfb _pthread_wqthread + 294

Я не понимаю этот отчет о сбоях. Также я не знаю, когда это происходит.

Есть ли способ узнать больше об этой аварии?

Как я могу решить эту проблему?

4b9b3361

Ответ 1

Вам нужно символизировать отчет о сбое, который преобразует адреса в строке от 0 до 7 в значащие классы, методы и номера строк. Обычно Xcode делает это автоматически, если у вас все еще есть двоичный файл сборки, вызвавший крушение.

Ответ 2

Ошибка SIGSEV - это сигнал отправки, когда вы пытаетесь получить память, которую вы не можете коснуться

Лучший способ решить эту проблему - поставить точку останова и линию перехода на линию, чтобы найти строку, которая является проблемой

Или вы можете также добавить некоторые журналы отладки, чтобы увидеть, была ли проблема

Чтобы понять, что означает SIGSEV или SEGV_ACCERR, вы можете искать в Интернете дополнительную информацию;)

Ответ 3

Вопрос старый, но есть лучший способ ответить Джон Смит.

В настоящее время лучший подход выполняется с использованием профилировщика (в XCode: Product/Profile) с использованием соответствующего шаблона.
Скорее всего, вам нужно использовать шаблон "Zombies", который теперь также поддерживается на устройстве:) не только на эмуляторе. При использовании этого инструмента у вас есть большая вероятность обнаружить неправильное использование памяти.