どこでクラッシュしたのか見通しを良くする
Appleから受け取ったクラッシュログは、クラッシュした状態のスタックトレースをバイナリ上のアドレスで示されています。
このままだと、内容を見てもソースコード上のどこが悪いのかさっぱり分かりません。
シンボリケートとは、主にバイナリ上のアドレスからソースコードの場所を突き止める事をいいます。
使用するコマンド
クラッシュログのシンボリケートにはsymbolicatecrash
コマンドを使用すると便利です。
XCode 6では以下のパスに存在しています。
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
/usr/bin
あたりにシンボリックリンクを貼っておくと吉。
必要なファイル
クラッシュログを吐いたバイナリと同じビルドのもので、以下が必要です:
- appファイル
- dSYMファイル
XCodeのOrganizerを開き、アーカイブ一覧から該当のビルドを探します。
次に、該当ビルドの項目を右クリックしてShow in Finder
します。
開かれたディレクトリに、上記二つのファイルが存在します。
シンボリケートの実行
以下のように実行します。
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
symbolicatecrash -v crashファイル dSYMファイル appファイル
トラブルシューティング
DEVELOPER_DIR
を予め設定しておかないと、以下のようなエラーが出ます。
Error: "DEVELOPER_DIR" is not defined at /Applications/Xcode.app/[snip]Resources/symbolicatecrash line 53.