クラッシュレポートの調査をした時に困った話です。
対象:Xcodeの Organizerから見れるCrashレポート
結論から言うと、下記の方法は現在必要ありません・・・・が、
せっかく調べてまとめたので書き残しておきます。
____________________________________________________________________________________________________________________
xcodeのクラッシュレポート解析手順
※解析・・・英語と数字の羅列→ソースコード内のメソッド名など理解できるものに
今回はデスクトップにコピーをとって解析している。
必要なもの
・A. ターミナル(Macにプリインストールされているソフト)
・B. .crashファイル(xcode→Organizer→Crashes→対象のファイルを右クリック→Show in Finder)を一時フォルダにコピー
・C. .dSYMファイルとappファイル
>1. Xcode > Window Organizer
>2. 申請を行ったバージョンのビルドを右クリックして「Show In Finder」を選択
>3. Finderで表示されているファイルを右クリックして「パッケージの内容を表示」
>4.-1 「dSYMs」ディレクトリ内に「アプリ名.app.dSYM」があるので、一時フォルダにコピー
>4.-2 「Product/Application」ディレクトリ内に「アプリ名.app」があるので、一時フォルダにコピー
・D. symbolicatecrashファイル
>ターミナルで下記を実行
> cd /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/
>エラーが出なければok(symbolicatecrashファイルがあるということ)
実行手順
①ターミナルで下記を実行して、先ほどコピーした一時フォルダに移動。(※場所は上記のコピー格納先)
cd ~/一時フォルダの場所(Desktopなど)
②ターミナルで下記を実行(※これをやらないと60行目にエラーが出るらしい)
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
③ターミナルで下記を実行(ログを紐づける)
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash クラッシュファイル名.crash アプリファイル名.app.dSYM アプリファイル名.app
④エラーが出なければ数秒後にログが表示される。
⑤Thread (数字) Crashed: となっている部分を探し、その中で自分がつけたメソッド名やcppファイル名を探す。
____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________
今回はXcodeのCrashレポートしか調べていないため、
iTunesConectに提出して送り返された.crashファイルには必要かもしれない。
https://developer.apple.com/library/content/technotes/tn2151/_index.html
____________________________________________________________________________________________________________________________________________________________________________________
結論
(2018/01/25現在)xcodeから拾えるクラッシュファイルは既にsymbolicatecrashされた状態だった。
上記の方法は提出した時以外は必要ない。(今では提出する時も?)
クラッシュファイルを解析して出来ることは、クラッシュの理由の特定(例外コード)、クラッシュ時のメソッドの特定。
ただし、汎用的なメソッド(Unity内部の描画メソッドなど)だと明確な特定はできない。
どうしても特定したいなら下記を参考にしつつ前例を調べるくらいしかないと思う。
https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-STACKTRACE
では、他の企業はどうやっているのか?
確信はありませんが、外部の有料解析ツールを使用していると思います。
SmartBeat -スマホアプリのクラッシュ解析ツール
例えば、このSmartBeatだと、クラッシュ時の画像までキャプチャでき、
SDKも比較的導入しやすいのもあり、個人的に使ってみたいです。
はい、以上になります!
うまくいかない事ばかりですが、これからも頑張ります!