■はじめに
開発環境であれば、Xcodeにログが出るので、クラッシュしてもすぐに分かります。
ただ、開発環境以外でAdHocなどでテストしてた場合、ログが見れないので調査が難航することがあります。
crashlyticsなどを組み込んでおけば、解析は楽ですが、それができないケースもあると思います。
ここでは、crashlyticsなどを使用せずにクラッシュログを確認する方法を記載します。
■手順(iOS)(ips)
クラッシュが起きた端末で以下の操作をしてください。
※iOSのバージョンによって多少操作方法が異なる場合があります。
「設定」アプリ起動 -> 「プライバシー」 -> 「解析および改善」 -> 「解析データ」
「解析データ」にずらっとログの一覧が表示されます。
そこから、以下を探してタップします。
※日時はクラッシュが起きた日時です。
[アプリ名]-[yyyy-MM-dd-HHmmss].ips
ログを開いたら、「共有」でAirDropなどで解析するMacにログを送ってください。
■手順(Mac)(dSYM)
「dSYM」を用意します。
※「dSYM」とはクラッシュログを人間が読める形にするために必要な情報です。
以下で、テストに使用したアプリを探します。
「Xcode」を開く -> Window -> Organizer
テストに使用したアプリを右クリックし、「Show in Finder」を押下する。
対象のアプリ(日時などを確認)の「.xcarchive」を右クリックして「パッケージの内容を表示」を押下する。
以下のファイルを取得する。(コピーしておくなど)
※ライブラリを使用していると、「dSYMs」配下に複数のdSYMがある場合があります。
※「[アプリ名].app.dSYM」だけ使用するので間違えないようにしてください。
/dSYMs/[アプリ名].app.dSYM
■手順(Mac)(ログ生成)
「■手順(iOS)(ips)」で取得した「.ips」ファイルと、「■手順(Mac)(dSYM)」の「.app.dSYM」を同じディレクトリにコピぺする。
ターミナルを起動し、以下を実行する。
※初回のみ
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
「cd」コマンドでipsとdSYMが入っているディレクトリをカレントディレクトリにする。
以下のコマンドでログを生成する。
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v [ipsファイル名].ips [アプリ名].app.dSYM > crash.log
同ディレクトリに「crash.log」が生成されているので、このファイルがクラッシュログです。
中身が空っぽの場合には何かが間違えているので、dSYMがテストしたアプリの物か?など調べてみてください。