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