はじめに
iOS15 のクラッシュログのフォーマットが変わっており symbolicatecrash だと解析できずわりとつまづいたので備忘録。
symbolicatecrash じゃなくて CrashSymbolicator.py を使うらしいです。
To support the new JSON-format crash logs generated in macOS Monterey and iOS 15, Instruments includes a new CrashSymbolicator.py script. This Python 3 script replaces the symbolicatecrash utility for JSON-format logs and supports inlined frames with its default options. For more information, see: CrashSymbolicator.py --help. CrashSymbolicator.py is located in the Contents/SharedFrameworks/CoreSymbolicationDT.framework/Resources/ subdirectory within Xcode 13. (78891800)
使うやつ
- dSYM ファイル
- クラッシュログ(拡張子 ips のやつ)
- CrashSymbolicator.py
dSYM取得
Debug Information Format を DWARF with dSYM File にして ipa を作成する。
xcarchive ファイルを開くと下記のように dSYM ファイルがあるので取得する。
クラッシュログ取得
実機に ipa を入れてクラッシュさせる。
(実機をつないで Xcode の Window > Devices and Simulators からインストールできるらしい)
実機の設定 > プライバシー > 解析および改善 > 解析データで該当アプリを検索してログを取得する。
(共有 > AirDrop で Mac に送れる)
シンボル化
ついにシンボル化!
クラッシュログと dSYM ファイルを同じフォルダに配置する。
- ターミナルを開いて cd で該当フォルダに移動
- 下記コマンド実行
python3 /Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Resources/CrashSymbolicator.py -p foo.ips -d Foo.app.dSYM -o piyo.ips
piyo.ips がシンボル化されたログです
おわりに
symbolicatecrash でやると No crash report version になり dSYM が違うのか?とかわりと悩みましたが iOS 15 からは CrashSymbolicator.py を使うようです。
あまり CrashSymbolicator.py を使う機会はないかもしれませんが