クラッシュログ(ipsファイル)のシンボル化

iOSアプリやmacOSアプリは、クラッシュすると自動的にクラッシュログファイルが作成されます。クラッシュログファイルは .ips という拡張子のファイルです。

クラッシュログファイルには、以下のような情報が入っています。

  • OSのバージョンやCPUアーキテクチャなどの動作環境
  • クラッシュしたスレッド
  • クラッシュ時の全スレッドのコールスタック
  • クラッシュ時の状態

クラッシュログは原因調査の大きな材料です。クラッシュログから原因が判明することも多くあります。

目次

シンボル化の必要性について

市場にリリースされているアプリは、シンボル情報をシンボリックファイルに出力して、アプリ本体にはシンボル情報を削除していることが多くあります。シンボル情報がないため、クラッシュログにはメソッド名などのシンボル名が書かれず、アドレスが書かれています。

アドレスの状態では、クラッシュしたメソッドが分かりません。そこで、dSYMファイルを使ってクラッシュログのシンボル化を行います。

シンボル化の方法

シンボル化を行うには、以下のように操作します。

(1) 作業ディレクトリにクラッシュログファイルとdSYMファイルをコピーします。

(2) CrashSymbolicator.py を使ってシンボル化します。

ターミナルで以下を実行します。

python3 /Applications/Xcode.app/Contents/SharedFrameworks/CoreSymbolicationDT.framework/Versions/A/Resources/CrashSymbolicator.py -p path-to-crashlog.ips -d path-to-symbol.dSYM -o path-to-crashlog.json

path-to-crashlog.json にシンボル化されたクラッシュログがJSON形式で出力されます。

ログの形式変更

JSON形式のファイルは見づらいので、クラシカルなクラッシュログに変換します。GitHubで変換スクリプトが以下のリポジトリで公開されています。

このリポジトリの convertFromJSON.swift を使用します。以下のように実行します。

swift convertFromJSON.swift -i path-to-crashlog.json -o path-to-crashlog.log`

成功すると、path-to-crashlog.log に変換されたクラッシュログが出力されます。

著書紹介

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

Akira Hayashi (林 晃)のアバター Akira Hayashi (林 晃) Representative(代表), Software Engineer(ソフトウェアエンジニア)

アールケー開発代表。Appleプラットフォーム向けの開発を専門としているソフトウェアエンジニア。ソフトウェアの受託開発、技術書執筆、技術指導・セミナー講師。note, Medium, LinkedIn
-
Representative of RK Kaihatsu. Software Engineer Specializing in Development for the Apple Platform. Specializing in contract software development, technical writing, and serving as a tech workshop lecturer. note, Medium, LinkedIn

目次