クラッシュログを解析してみたり

 iPhoneのAdHocテストなどの出るクラッシュログ。
 アプリのシンボルコードが無くなって、分かりづらいですね。
 シンボルコードを付ける方法を調べてやってみました。

 symbolicatecrash というツールを使うとクラッシュログにシンボルを付加して、


 こんなクラッシュログが、


0 appname 0x00003466 0x1000 + 9318
1 appname 0x00002a7c 0x1000 + 6780


 こんな風に変わり、分かりやすくなります。


0 appname 0x00003466 -[appnameViewController awakeFromNib] (appnameViewController.m:103)
1 appname 0x00002a7c -[appnameAppDelegate applicationDidFinishLaunching:] (appnameAppDelegate.m:22)


 Xcode 3.2.4での話ですが、symbolicatecrash はココにありました。


/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneRemoteDevice.xcodeplugin/Contents/Resources/symbolicatecrash


 symbolicatecrash は、ターミナルで使うコマンドなので、パスが通った所にコピーします。
 例えば /usr/bin。
 ターミナルでUnixのコマンドでコピーしても良いですし、
ファインダーの「フォルダに移動」を使い、"/usr/bin"を開いて、そこにコピーしても良いですね。


 symbolicatecrash は、もともと実行権限をもっているのでそのままでOK。
 心配な人は ls -l で確認して実行権限が無ければ chmod か、BatChmodというGUIツールで変更してください。


 symbolicatecrash の使い方です。
 symbolicatecrashは、HD内の対応するdSYMを探してきてくれるので、


 symbolicatecrash クラッシュログ > 保存したいテキストファイル名


 これで出来ます。
 ただし、そのクラッシュログと対応したdSYMがHDの中に保存されている必要があります。
 dSYM はビルドした時にできるシンボルを格納したファイルだとか。
 AdHoc配布やAppStoreにアップする時は、どこかに保存しておく事をお勧めしますです。


 クラッシュログを送られてきて、解析できなくて大弱り、、という事にならないための転ばぬ先にdSYMを保存です。


 それにしても、こんな事が出来るようになってるなんて、世の中進んだものだなぁ。
 単に私が知らないだけだったんですけどね。