symbolicatecrash には .crash と .app.dSYM/ と .app/ が必要

ごくまれに、場合によっては頻繁に、どこか別の環境でビルドされた 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 アプリの紹介ビデオでも見ていってください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA