ごくまれに、場合によっては頻繁に、どこか別の環境でビルドされた Ad-Hoc ビルドのクラッシュログを見なければならないことがあります。
うまく symbolicatecrash で結果を得るには以下の手順が必要です。
(Ad-Hoc ビルドした .ipa やそのとき生成された .dSYM は入手済みとして話を進めます)
Xcode 4.5.2 の場合、symbolicatecrash は
/Applications/Xcode.app/Contents/Developer/Platforms/
iPhoneOS.platform/Developer/Library/PrivateFrameworks/
DTDeviceKit.framework/Versions/A/Resources
にあります。パスを通すとか、エイリアスを作成するなどしてください。
$ symbolicatecrash MyApp.crash MyApp.app.dSYM/
とすると、
Error: “DEVELOPER_DIR” is not defined at …以下省略
となるので、
DEVELOPER_DIR を設定してあげます。
$ export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer/"
または
% setenv DEVELOPER_DIR /Applications/Xcode.app/Contents/Developer/
再度、
$ symbolicatecrash MyApp.crash MyApp.app.dSYM/
するとクラッシュログの解析結果が出力されるようになりますが、
2 CoreFoundation 0x34279b70 -[__NSArrayM objectAtIndex:] + 160 3 MyApp 0x00175470 0xca000 + 702554
といったように、フレームワークのアドレスはシンボル表示されますが、
アプリのアドレスがシンボル表示されません。
これを解決するには、MyApp.app/ が必要です。
$ unzip MyApp.ipa
とすると、Payload/MyApp.app が取り出せますので、
この状態で、
$ symbolicatecrash MyApp.crash MyApp.app.dSYM/
を行います。すると
2 CoreFoundation 0x34279b70 -[__NSArrayM objectAtIndex:] + 160 3 MyApp 0x00175470 -[MyApp cogitoergosum] (MyApp.m:664)
のような結果が得られ、当初の目的が果たせます。
解凍した MyApp.app は適当な場所にあっても探してくれるようです。
これが探していた情報だったと言う人は
私が作った iOS アプリの紹介ビデオでも見ていってください。