EXC_BAD_ACCESS (SIGSEGV)
発生原因
- リリース済みメモリーにアクセス
- 存在しないObjectにアクセス
特徴
- Exception Subtype にKERN_INVALID_ADDRESSがくる
発生アドレスとPCを比較する
- 同じなら - 命令の fetch エラー
- 異なる - 参照先エラー
EXC_BAD_ACCESS (SIGBUS)
発生原因
- read-only メモリーに書き込み
特徴
- Exception Subtype に KERN_PROTECTION_FAILURE がくる
発生アドレスとPCを比較する
- 同じなら - 命令のfetchエラー(メソッド名)
- 異なる - 参照先エラー
EXC_CRASH (SIGABRT)
発生原因
- Objective-C の Exception が発生したが Catch されなかった
特徴
- 他の thread を確認する必要がある。
- Last Exception Backtrace が表示される場合がある。
EXC_BREAKPOINT (SIGTRAP)
発生原因
- 非 Optional Type に nil が入ってくる
- forced unwrapping 失敗
特徴
- まずはデバッガーに制御を渡すができない場合はクラッシュ
EXC_BAD_INSTRUCTION (SIGILL)
発生原因
- CPU が不正な命令(UD2)を実行 UD2:この命令自体には意味がない
特徴
- 過程を調べる必要がある
- Frame の中を調査する
SIGKILL
発生原因
- iOS から強制終了
- Termination Reason に詳細
Code | 備考 |
---|---|
0x8badf00d | watchdog のタイムアウト(メインスレッドがブロックされてる場合など) |
0xbad22222 | VoIP アプリが頻繁に最下位 |
0xc00010cc | 発熱により OS がアプリを強制終了 |
0xdead10cc | アプリが suspend 状態(バックグラウンド)になり、ロックされたファイル、SQLite の DB に対し操作をすると発生 |
0x2bad45sec | 画面がロックされた状態で描画をするなど、セキュリティ違反 |