iOSアプリのCrashログをsymbolicateする
iPhoneアプリのクラッシュログからクラッシュの原因を探す。
必要なもの
- クラッシュログ
- dSYMファイル
クラッシュログを取得
クラッシュログ一覧を表示
Devicesウィンドウを開く
Xcode Windows -> Devices (Shift+Cmd+2)
- デバイスを選択
View Device Logsでクラッシュログの一覧を表示

クラッシュログのエクスポート
- 該当アプリのクラッシュログをCtrl+左クリック(右クリック)
Export Logで任意のディレクトリに出力

dSYMファイルを取得
Organizerを開く
Xcode Windows -> Organizer (Shift+Cmd+2)
該当アプリのクラッシュしたバイナリに対応するxcarchiveファイルを表示
- 該当アプリを選択
- クラッシュした時のビルドをCtrl+左クリック(右クリック)
Show in Finderでファインダーで表示する

dSYMファイルを取り出す
- ファインダーで表示された
xcarchiveファイルをCtrl+左クリック(右クリック) - パッケージの内容を表示する

クラッシュログを書き出したディレクトリにパッケージ内の dSYMs ディレクトリを書き出す
パッケージ内はこんな感じ

書き出したディレクトリはこんなかんじ

クラッシュログをsymbolicateする
terminal でクラッシュログを書き出したディレクトリへ移動。 terminal に該当ディレクトリをドラッグアンドドロップでパスが貼り付けられる。
cd /path/to/crash_log
symbolicatecrash のpath
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Resources/symbolicatecrash
これでもOK
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
長いので変数にする(パスでもいいけど余計なものがたくさんあるので確認推奨
symbolicatecrash="/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Resources/symbolicatecrash"
このままでは DEVELOPER_DIR が見つからないとエラーになるので宣言する。
export DEVELOPER_DIR=`xcode-select -p`
xcode-select が無い場合は
export DEVELOPER_DIR="/Applications/Xcode.app/Contents/Developer"
クラッシュログを symbolicate.crash という名前で出力する。そのまま⌘を叩くと標準出力で返されるのでと読みづらい。
$symbolicatecrash ./MyCrashLog.crash ./dSYM >> symbolicate.crash
dSYMファイルを引数に指定しているサイトもあるけどディレクトリでok

