概要
あなたはXcodeに接続せずに携帯電話でアプリケーションをテストしていますか?あなたはAppleに対してバグレポートを提出していて、Appleはクラッシュログを要求しましたか?この記事では、クラッシュログをフェッチする方法をいくつかご紹介します。
- お使いのデバイスをXcodeに接続してデバッグする(インタラクティブ)
- お使いのコンピューター上のクラッシュログにアクセスする(シンボル化)
- お使いのデバイス上のクラッシュログにアクセスする(シンボル化されていない)
この記事でもシンボル化されたクラッシュログの解析方法について説明します。
シンボル化されたクラッシュログは、クラッシュの原因となった特定のコードを表示します。
App Storeのレビュー担当から提供されたログファイルを使用し、クラッシュが発生した場所を把握するときに重要となります。
- Xcodeでクラッシュログをシンボル化する
-
symbolicatecrash
ツールでクラッシュログをシンボル化する -
atos
ツールでクラッシュログをシンボル化する
既にApp Storeで公開されているアプリケーションのクラッシュログを解析する方法については、こちらをクリックして別の記事を参照してください。
クラッシュレポートの取得方法
デバイスをXcodeに接続する(シンボル化済み)
最も簡単な方法は、デバイスをMacBookに接続し、コンピュータに接続されたスマートフォンでアプリケーションを実行することです。
Xcodeでクラッシュログにアクセスします(シンボル化済み)
まず、スマートフォンをコンピュータに接続します。次に、Xcodeアプリケーションを開きます。
上部にある Window
メニューをクリックし、Devices and Simulators
を選択します
次に、左側で Device
タブを選択します
ウィンドウの右側にある View Device Logs
をクリックします
これでログメッセージの一覧が見られるようになり、検索ボックスにアプリケーションの名前を入力することで特定のクラッシュログを探せるようになりました。また、All Logs
ボタンをクリックしてすべてのログを閲覧することも可能です。
デバイス上でクラッシュログ (シンボル化されていない状態) にアクセスする
クラッシュログにはiPhoneまたはiPadから直接アクセスできます。
-
設定
を開く -
プライバシー
を開く
解析および改善
を開く
解析データ
を開く
すると、全てのクラッシュログの閲覧表が表示されます。下へスクロールすると、検索バーが出てきます。そこへアプリケーション名を入力すると、そのアプリのクラッシュログのリストがみられます。
クリックしてログへ入ると、それをコンピューターへエアドロップできます。
ログファイルをシンボル化
Xcodeの中
最初に、クラッシュファイルのファイル拡張子が .crash
になっているかどうか確認してください。もしそうなっていなければ、拡張子を .crash
に変更してください。
Xcodeを開いて、Devices and Simulators
ウィンドウを開いてください。View Device Logs
(デバイスログを閲覧)をクリックしてください。表が完全にロードしたら、クラッシュファイルをウィンドウの左パネルへドラッグしてください。
コマンドラインで
コマンドラインを使って各アドレスをシンボル化することも可能です
まず、 dSYM
ファイルを見つけます
App Storeにアップロードされているアプリの場合、Xcode の Organizer
を開くことで dSYM
ファイルをフェッチできます。アプリを見つけ、バージョンの上で右クリックしてください。
これで、Xcodeのアーカイブされたファイルを Finder アプリ内で閲覧できるようになります。 そのアーカイブ上で右クリックして、パッケージの内容を表示
をクリックしてください。
これで Folder 内で dSYM
ファイルが見られるようになります。
dSYM ファイルの検索
ID を一致させて dSYM ファイルを検索することもできます。
最初に ID を見つけます
アプリケーションの ID はクラッシュレポートの Binary Images
セクションで見つかります
その後、以下のコマンドを入力し、所定の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
の一行目にあります。
Load address: クラッシュレポートのバイナリイメージ Binary Image
の一行目にあります。
Stack Address: これは、そのファイルの行に一番最初に表示されるアドレスです。
従ってこの場合、実行するコマンドラインは:
atos -arch arm64 -o <dSYM file path> -l 0x10237c000 0x000000010243bd64
上記のコマンドの出力には、異常終了が起きた場所のコード行が表示されているはずです。
iOS15以降のログファイル解析
iOS 15では、ログファイルを解析するための新しいツールがあります。
@am10 さんの記事を読んでみてください。
⭐️ こちらのウェブページにアクセスすると、私の公開されているQiitaの記事のリストをカテゴリー別にご覧いただけます。