
必ずぶつかるEXC_BAD_ACCESS
iPhone/iPadアプリを開発していてかならず見るのでEXC_BAD_ACCESSのエラー。。
このエラーは発生箇所が記述されないのでとても困る。
発生源をピンポイントで掴む方法はないみたいだけど、手かがりをコンソールに表示することはできるみたい。
その方法をメモ。
ちなみにXcodeのバージョンは4.3
Xcode設定方法
設定はとても簡単。
1. Schemeから「Edit Scheme」をクリック!
2. RunからEnviroment Variablesに追加
下記三つの項目を追加する。値は全てYESにする。
NSZombieEnabled | YES
MallocStackLogging | YES
NSDebugEnabled | YES
設定はこれだけでOK!!
3. EXC_BAD_ACCESS時にコンソールを見てみると…
以前より詳細なメッセージが表示されるようになりました。
下記を見てみるとUIImageまわりで問題が起きているようでした。
(残念ながらこの情報までしかだしてくれませんが・・)
*** -[UIImage isKindOfClass:]: message sent to deallocated instance 0x561c4d0
もっと詳細な情報がほしい場合は、コンソール下の(gdb)に下記のコマンドをうつことで得ることができます。
shell malloc_history {pid/partial-process-name} {address}
なので、上のキャプチャ画像の場合はこんな感じ。↓
shell malloc_history 3966 0x561c4d0
このコマンドをうつと大量の文字がズラズラとでてきます。。
ここを見てメソッドなりクラスなり手かがりがわかる場合もあるようです。
今回は、このコマンドでこれといった情報は得られなかったので、
コンソールにでてたUIImageまわりを諸々確認して解決しました。
もっとピンポイントでわかる方法はないものか・・・。