LoginSignup
41
27

More than 1 year has passed since last update.

iOSアプリケーションのクラッシュログを見つける方法とiOSのクラッシュログをシンボル化する方法

Last updated at Posted at 2020-09-18

概要

あなたはXcodeに接続せずに携帯電話でアプリケーションをテストしていますか?あなたはAppleに対してバグレポートを提出していて、Appleはクラッシュログを要求しましたか?この記事では、クラッシュログをフェッチする方法をいくつかご紹介します。

  1. お使いのデバイスをXcodeに接続してデバッグする(インタラクティブ)
  2. お使いのコンピューター上のクラッシュログにアクセスする(シンボル化)
  3. お使いのデバイス上のクラッシュログにアクセスする(シンボル化されていない)

この記事でもシンボル化されたクラッシュログの解析方法について説明します。

シンボル化されたクラッシュログは、クラッシュの原因となった特定のコードを表示します。

App Storeのレビュー担当から提供されたログファイルを使用し、クラッシュが発生した場所を把握するときに重要となります。

  1. Xcodeでクラッシュログをシンボル化する
  2. symbolicatecrash ツールでクラッシュログをシンボル化する
  3. atos ツールでクラッシュログをシンボル化する

既にApp Storeで公開されているアプリケーションのクラッシュログを解析する方法については、こちらをクリックして別の記事を参照してください。

クラッシュレポートの取得方法

デバイスをXcodeに接続する(シンボル化済み)

最も簡単な方法は、デバイスをMacBookに接続し、コンピュータに接続されたスマートフォンでアプリケーションを実行することです。

Xcodeでクラッシュログにアクセスします(シンボル化済み)

まず、スマートフォンをコンピュータに接続します。次に、Xcodeアプリケーションを開きます。

上部にある Window メニューをクリックし、Devices and Simulators を選択します

image

次に、左側で Device タブを選択します

image

ウィンドウの右側にある View Device Logs をクリックします

スクリーンショット 0002-09-18 13.28.32.png

これでログメッセージの一覧が見られるようになり、検索ボックスにアプリケーションの名前を入力することで特定のクラッシュログを探せるようになりました。また、All Logs ボタンをクリックしてすべてのログを閲覧することも可能です。

デバイス上でクラッシュログ (シンボル化されていない状態) にアクセスする

クラッシュログにはiPhoneまたはiPadから直接アクセスできます。

  1. 設定 を開く
  2. プライバシー を開く
image

解析および改善 を開く

image

解析データ を開く

image

すると、全てのクラッシュログの閲覧表が表示されます。下へスクロールすると、検索バーが出てきます。そこへアプリケーション名を入力すると、そのアプリのクラッシュログのリストがみられます。

image

クリックしてログへ入ると、それをコンピューターへエアドロップできます。

ログファイルをシンボル化

Xcodeの中

最初に、クラッシュファイルのファイル拡張子が .crash になっているかどうか確認してください。もしそうなっていなければ、拡張子を .crash に変更してください。

Xcodeを開いて、Devices and Simulators ウィンドウを開いてください。View Device Logs(デバイスログを閲覧)をクリックしてください。表が完全にロードしたら、クラッシュファイルをウィンドウの左パネルへドラッグしてください。

コマンドラインで

コマンドラインを使って各アドレスをシンボル化することも可能です

まず、 dSYM ファイルを見つけます

App Storeにアップロードされているアプリの場合、Xcode の Organizer を開くことで dSYM ファイルをフェッチできます。アプリを見つけ、バージョンの上で右クリックしてください。

スクリーンショット 0002-09-18 13.59.12.png

これで、Xcodeのアーカイブされたファイルを Finder アプリ内で閲覧できるようになります。 そのアーカイブ上で右クリックして、パッケージの内容を表示 をクリックしてください。

スクリーンショット 0002-09-18 13.59.45.png

これで Folder 内で dSYM ファイルが見られるようになります。

スクリーンショット 0002-09-18 14.00.06.png

dSYM ファイルの検索

ID を一致させて dSYM ファイルを検索することもできます。

最初に ID を見つけます

アプリケーションの ID はクラッシュレポートの Binary Images セクションで見つかります

スクリーンショット 0002-09-18 14.21.02.png

その後、以下のコマンドを入力し、所定のUUIDのdSYMファイルを検索します。

mdfind "com_apple_xcode_dsym_uuids == <UUID>"

symbolicatecrash ツールの利用

まず最初にファイルパスを定義します:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

その後、コマンドを実行します

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -d <path_to_dsym> -o <output file> <path_to_crash_report>

: あなたのdSYMファイルのファイルパス
: 出力場所
: オリジナルのクラッシュレポートへのファイルパス

atos ツールの利用

atos -arch <binary architecture> -o <dSYM file path> -l <Load address> <Stack Address>

binary architecture: クラッシュレポートのバイナリイメージ Binary Image の一行目にあります。

スクリーンショット 0002-09-18 14.16.35.png

Load address: クラッシュレポートのバイナリイメージ Binary Image の一行目にあります。

スクリーンショット 0002-09-18 14.12.48.png

Stack Address: これは、そのファイルの行に一番最初に表示されるアドレスです。

スクリーンショット 0002-09-18 14.14.45.png

従ってこの場合、実行するコマンドラインは:

atos -arch arm64 -o <dSYM file path> -l 0x10237c000 0x000000010243bd64

上記のコマンドの出力には、異常終了が起きた場所のコード行が表示されているはずです。

iOS15以降のログファイル解析

iOS 15では、ログファイルを解析するための新しいツールがあります。
@am10 さんの記事を読んでみてください。


⭐️ こちらのウェブページにアクセスすると、私の公開されているQiitaの記事のリストをカテゴリー別にご覧いただけます。

41
27
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
41
27