XCodeでのデバッグはちゃんと覚えるべし

ある操作をしたとき、CoreDataの保存をするタイミングで EXC_BAD_ACCESS が出て落ちてしまう。

ここ最近、それでずっと悩んでおりました。

落ちる操作も場所も分かってるから、ソースをキレイにしていけばなくなるだろうと思っていたのが良くなかった。
どうやってもエラーがなくならない。

それで、少し踏み込んでデバッグしたら、自分が問題ないと思い込んでいた場所が原因だとすぐに特定できました。
保存するところから2画面も離れたところの操作で、特に気にしていなかった場所でした。

いやー、デバッグの偉大さを久しぶりに思い知らされました。
どうも最近、傲慢になってて失敗してるとです。


とりあえず、下記のやり方で、少し踏み込んだデバッグができるのでメモしておきます。


● 左側のファイル一覧の「実行可能ファイル > 自分のアプリ」を右クリックして「情報を見る」
● 「引数」タブの「環境に設定される引数」で下記のパラメータをセット
NSDebugEnabled: YES
MallocStackLogging: YES
NSZombieEnabled: YES

● 「ビルドとデバッグ」でアプリケーションを実行

● アクセスエラーが起こるとデバッガコンソールに下記のようにメッセージが出る
2010-10-29 01:19:24.316 MoneyLogger[36435:207] *** -[CFNumber release]: message sent to deallocated instance 0x70526f0
● 続けてデバッグコンソールに (gdb) と出ているので次のコマンドを入力
(gdb) info malloc-history 0x70526f0(← 最後の部分は上のメッセージの最後の部分。)

● 表示されるログは下から上に向かって実行された順となっている

このログでも分かりにくいんだけど、今回は自分の予想とは全然違うことでエラーになっていたっぽいので解決のヒントとなりました。

下記を参照させていただきました。ありがとうございます。
http://conex.fujigoma.com/?target=http://conex.fujigoma.com/hardware/iphone_sdk07.html