クラッシュが発生して、原因が分からないとかなしくなりますよね。
このトークでは、配信アプリで使用している Broadcast Extension 上で発生したクラッシュの詳細について、クラッシュ発生時のスタックトレースを取得して解析し、複数のクラッシュの修正に繋げた話をしようと思います。
クラッシュが発生した際、以下のようなスタックトレースを取得することができます。
0 broadcast 0x0000000100fa8b6c broadcast + 183148
1 libsystem_platform.dylib 0x00000001f8a0a290 73F3E459-0F82-3377-A7D1-EF05CAE41C0A + 21136
2 AVFAudio 0x00000001bf5e9e18 53161832-5A1C-3C33-AF53-6816B1D1C2C5 + 441880
...
スタックトレース、クラッシュした端末のアーキテクチャの情報、対応する dSYM ファイルを組み合わせると、クラッシュが発生した箇所を詳しく調べることができます。
この集計は Command line tools for Xcode を使用するのですが、手作業では1行づつしか解析できず、処理も時間がかかります。そこで、キャッシュによる高速化や解析結果の集計のために、専用の mac アプリを SwiftUI で作成しました。
上記の取り組みにより明らかになったクラッシュ情報を用いて、発生していた3割のクラッシュを修正し、プロダクトの改善に繋げることができました。