【iOS】リジェクトで送られてきたクラッシュファイルをわかりやすい形式に変換する

クラッシュが理由でアプリがリジェクトされる場合があります。その場合、クラッシュファイルというのが添付されてきます。ただ、このファイルをそのまま見ても何のことやらさっぱりわかりません。

今回、クラッシュの場所が特定できるように、このファイルを変換する方法を説明します

作業用のフォルダを作成

どこでもいいので、作業用のフォルダを作ります。ホームにcrashlogというフォルダを作りました

/Users/(ユーザ名)/Documents/crashlog

今回はここで作業することにしますよ

Appleから送られてきたクラッシュファイルを保存

このような感じで、クラッシュファイルが添付されてくるのでダウンロードして作業用フォルダに保存します。この画像では2個ありますが、大抵は1つだと思います

ArchivesのdSYMファイルを保存する

Organizerを開いて、申請したときのArchiveを選択して右クリックしてファイルをFinderで表示します

xxx.xcarchiveが開くので、これを右クリックして、「パッケージの内容を表示」を選びます

「dSYMs」というフォルダがあるので、中を見ると、xxxx.app.dSYMというファイルがあります
これを先ほど作成した作業用フォルダにコピーします

symbolicatecrashを実行する

2つのファイルの準備ができました。この2つのファイルから、変換したファイルを出力します

symbolicatecrashというツールを使用します。Xcodeのバージョンによって場所が異なるようです
Xcode8だと、

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

にあります

どこにあるのかわからない場合は

find /Applications/Xcode.app -name symbolicatecrash

で見つかると思います

ターミナルを起動して、作業ディレクトリに移動します

cd /Users/(ユーザ名)/Documents/crashlog

まず、環境変数を定義します。これを実行しないと
Error: “DEVELOPER_DIR” is not defined 〜
というエラーが出ます

export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"

いよいよ最後の作業です。クラッシュログを変換します
クラッシュログとdSYMファイルを入力して、crash.txtを出力します。ほんの少し時間がかかります

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash (クラッシュログファイル名) (dSYMファイル名) > crash.txt

これで、新しいファイルが出力されました

変換前のクラッシュログ。こんな感じで何が何だかわからなかったファイルが・・・

新しく出力されたクラッシュログ。これでどのクラスのどのメソッドでクラッシュしたのかわかりました

クラッシュの原因が、さっぱり検討つかない場合は非常に役に立ちます。ちょっと面倒ですけどね

タイトルとURLをコピーしました