クラッシュレポートの分析
TestFlight を使用し、テストのためあなたのアプリを配布した後か、ストアでそれを利用できるようにした後は、定期的にクラッシュレポートをダウンロードして、分析して下さい。アプリがクラッシュすると、システムはアプリがそれぞれの実行中のスレッドでの完全なスタックトレースを含め、ほとんどの場合で、アプリが終了した条件を記述するクラッシュログを作成します。Apple は、ユーザーのクラッシュログを収集し、集約したクラッシュレポートサービスを提供しています。
または、デバイスウィンドウでクラッシュの表示とインポート で説明したように、直接デバイス上でクラッシュログを表示し、またはクラッシュレポートをインポートします。例えば、ストアの外であなたのアプリを配布する場合、あなたはユーザから直接クラッシュレポートを要求することができ、Xcode にインポートできます。
クラッシュレポートサービスについて
Apple はあなたがストアを通じて配布した最新のアプリのバージョンとビルドについては、クラッシュレポートをダウンロードできるサービスを提供しています。サービスは収集し、クラッシュレポートに同様のクラッシュログをグループ化します。アプリの各ビルドは、複数のクラッシュレポートを有し、それぞれのクラッシュレポートは、複数のクラッシュログを含む場合があります。しかし、ユーザーがアプリの開発者とクラッシュデータを共有することに同意しない限り、クラッシュログは Apple に送信されません。TestFlight のユーザーは自動的にクラッシュデータを共有することに同意します。サービスは、クラッシュレポートを生成する、以下のことを行います。
- ユーザーのデバイス上で実行中のアプリとアプリ拡張機能からクラッシュログを収集します
- クラッシュログを抽象化 (人間が読める名前でメモリアドレスを置き換え)します
- スタック・トレースを比較し、同じようなにクラッシュログを同定しクラッシュレポートにグループ化します
- クラッシュログから個人のすべてのユーザーデータを削除します
- クラッシュが発生した場所のユニークなデバイスの合計数を提供します
- 各クラッシュレポートのクラッシュログのサンプルセットを提供します
- クラッシュレポートを毎日更新します
Xcode はクラッシュ・オーガナイザでクラッシュレポートに関する情報を表示します。
クラッシュレポートを表示する前に
完全にクラッシュレポート・サービスを有効にするには、これらすべての手順を実行して下さい。以前に iTunes Connect にシンボルとアプリをアップロードした場合と、TestFlight またはストアを使用して配布した場合は、すでにクラッシュ・オーガナイザでクラッシュレポートを見ているかもしれません。クラッシュ・オーガナイザでクラッシュレポートが表示されない場合は、これらの手順を実行していることを確認してください。
ステップ | |
---|---|
Xcode に Apple ID アカウントを追加 で説明したように、Apple の開発者プログラムに属するアカウントの設定で Apple ID を入力してください。 | |
バージョン番号とビルド文字列を設定 で説明したように、バージョンと、ビルド番号を設定します。あなたのアプリの別のビルドを配布する場合は、ビルド文字列を増分します。 | |
単一のアプリ・アーカイブを作成し、iTunes Connect にアプリをアップロード で説明したように、シンボルと共に iTunes Connect にアップロードします。("アプリケーションでのアプリのシンボルを含む..."ボックスが"提出"をクリックする前にチェックされていることを確認します) iTunes Connect にアップロードしたアーカイブを削除しないでください。 | |
iTunes Connect では、TestFlight ベータテスト(オプション) で説明したように、TestFlight を使用して、テスターにアプリを配布し、または アプリをアプリレビューに提出 で説明したように、レビューのためにアプリを提出します。 | |
アプリ開発者とクラッシュデータの共有 で説明したように、ストアからアプリをダウンロードするユーザーは、アプリ開発者とクラッシュデータを共有することに同意する必要があります。(TestFlight のユーザーは自動的にクラッシュデータ共有に同意します。) | |
Xcode でクラッシュレポートを表示するには、Xcode に Apple ID アカウントを追加 で説明したように、チームエージェントまたは管理者、または iTunes Coneect ユーザーは、Apple ID を入力します。 | |
Xcode でデバッグナビゲータのソースコードへのクラッシュ・オーガナイザでスタックフレームから行くには、アーカイブし iTunes Connec tにアップロードした Xcode のプロジェクトを開きます。 |
また、あなたが最初にアプリを配布する時とクラッシュレポートが Xcode で表示されるまでの間とに3日まで許可されます。優れたユーザーエクスペリエンスを維持するために、ユーザーが許可した時クラッシュデータが Apple にデバイスから送られます。
クラッシュオーガナイザでクラッシュレポートの表示
クラッシュオーガナイザは、チームすべてが開発したすべてのアプリのクラッシュレポートを表示します。
クラッシュレポートを表示するには
- オーガナイザで、[クラッシュ(Crashes)] をクリックします。
- 左の列で、リストからアプリまたはローカルアーカイブを選択します。
- 第二列の上部で、ポップアップメニューからバージョンとビルドを選択します。
- 2列目で、クラッシュレポートを選択します。
- 詳細エリアでは、クラッシュログを表示します。
- インスペクタで、クラッシュレポートの情報やビューの統計を追加します。
アプリのリストは、iTunes Connect から得られ、すべてのバージョンに関する情報が含まれ、iTunes Connect にアップロードしたものをビルドします。
Xcode は、選択したバージョンとビルドのクラッシュレポートの更新を開始します。Xcode はユニークなデバイス、過去2週間に発生した出現数が最も多い上位25のクラッシュレポートをダウンロードします。
クラッシュが発生した可能性が高いスタックフレームをクラッシュレポートのデフォルトのタイトルにします。クラッシュの固有デバイスの発生数は、クラッシュタイトルの下に表示されます。WatchKit 拡張機能のクラッシュレポートは、時計のアイコン() で表され、他のアプリの機能拡張のクラッシュレポートはパズルのアイコン () で示されます。
詳細エリアでは、各スレッドのスタックトレースを表示します。クラッシュが発生したスタックフレームはオレンジ色で強調表示されます。
クラッシュレポートの表示と検索
クラッシュレポートのリストで、以下のアクションを実行します。
- クラッシュレポートを検索するには、下にある検索フィールドに文字列を入力します。
- Finder でクラッシュレポートのクラッシュログを表示するには、クラッシュレポートを Control-クリックし、Finder で[表示(Show)] を選択します。
詳細エリアで、以下のアクションを実行します。
- クラッシュレポートの前または次のクラッシュログを表示するには、フッターでページの矢印 (< または >) をクリックするか、ページ数 (例えば、20 の 11) をクリックし、ポップアップメニューからページを選択します。
- クラッシュログを折りたたみまたは展開するには、フッターの左下隅にあるフィルタアイコン () をクリックします。あなたのアプリで、スタック・フレームのみを見るには、クラッシュログを折りたたみます。フレームワークとシステムのスタックフレームを含むすべてのスタックフレームを表示するには、クラッシュログを展開します。
クラッシュレポートの情報を編集
問題を解決すると、ローカルでクラッシュレポートの情報を格納できます。
クラッシュレポートのリストで、以下のアクションを実行します。
- 解決済みとしてクラッシュレポートをマークするには、クラッシュレポートの隣やインスペクタの下部にある円を選択し、"解決済みとしてマーク"をクリックします。
- 解決されたクラッシュレポートを表示しまたは隠すには、検索フィールドの隣のフッターの円()を選択します。
詳細領域で、以下のアクションを実行します。
- クラッシュレポートの名前を変更するには、ヘッダに挿入ポイントを置き、テキストを編集します。
インスペクタで、以下のアクションを実行します。
- クラッシュレポートについてのメモを追加するには、説明テキストフィールドにメモを入力します。
デバッグナビゲータでソースコードを開く
詳細エリアで、これらのアクションを実行します。
- スタックフレームのソースコードに移動するには、スタックフレームの上にマウスを置き、右に表示される矢印をクリックします。
- クラッシュが発生したソースコードに移動するには、強調表示されているスタックフレームの上にポインタを置くと表示される矢印をクリックします。
インスペクタで、以下のアクションを実行します。
- スタックフレームのソースコードに移動するには、"プロジェクトで開く(Open in Project)" をクリックして下さい。
Xcode は、関連したプロジェクトを開き、デバッグナビゲーター内のコードの行を表示します。
クラッシュレポートの統計情報の表示
デバイスの型、オペレーティングシステム、および日付で、過去2週間でのクラッシュデータを表示します。デバイスの型を変更するには、ポップアップメニューから[デバイスの型(Device Type)] を選択します。オペレーティングシステムを変更するには、ポップアップメニューから[オペレーティングシステム] を選択します。
       
アプリ開発者とクラッシュデータの共有
ユーザーがアプリ開発者とクラッシュデータを共有していない場合、Apple は、クラッシュレポートを提供できません。ユーザーがクラッシュを報告し、あなたが対応するクラッシュレポートを持っていない場合は、アプリ開発者とクラッシュデータを共有するように、ユーザーに依頼して下さい。クラッシュデータは、自動的に TestFlight のアプリのために Apple に送信されますが、ストアからユーザがダウンロードしたアプリでは送られません。
ユーザーにこれらの指示書を与えて下さい。全てのプラットフォームで、クラッシュデータオプションは、プライバシー設定の診断のセクションにあります。
iOS 開発者とクラッシュデータを共有するには
- 設定で、[プライバシー(Privacy)] をタップします。
- 一番下までスクロールし、[診断と使用(Diagnostics & Usage)]をタップします。
- 必要であれば、それを有効にするため、[アプリ開発者と共有(Share With App Developer)] スイッチをタップします。
           
同様に、アプリ開発者とクラッシュデータを共有するため Mac ユーザーに依頼します。
Mac 開発者とクラッシュデータを共有するには
- システム環境設定で、[セキュリティとプライバシー] をクリックします。
- [プライバシー] をクリックし、左側の列で、[診断と使用状況]をクリックします。
- "クラッシュデータをアプリケーションデベロッパと共有"を選択します。
プライバシーオプションを有効にするには、ロックアイコンをクリックします。表示されるダイアログで、管理者権限を持つシステムアカウントの資格情報を入力し、[ロック解除(Unlock)] をクリックします。
Apple TV のユーザーは、自分のクラッシュデータを共有することもできます。
tvOS 開発者とクラッシュデータを共有するには
- [設定] で、[一般(General)] をクリックし、[プライバシー(Privacy)] をクリックします。
- 診断データの下で、「アプリケーション開発者と共有」をクリックします。
- 表示されるダイアログで、「アップルに送信(Send to Apple)」をクリックします。
デバイスウィンドウでクラッシュの表示とインポート
デバイスウィンドウで、デバイス上直接クラッシュログの詳細を表示または他のソースから受信したクラッシュレポートをインポートできます。あなたが一致するビルドと .dSYM ファイルを含むアーカイブを持っている場合、Xcode は自動的にクラッシュレポートを 抽象化 します。 Xcode は、クラッシュログのメモリアドレスを人間が読み取り可能な関数名と行番号に置き換えます。次に、デバイスウィンドウ内の各実行スレッドのスタックトレースを見ることができます。
このため、アップロードし、ユーザーにエクスポートと配布したアーカイブを削除しないでください。たとえば、あなたのアプリが臨時プロビジョニングを使って配布する場合 (臨時プロビジョニングを使用してアプリを配布) または、チームプロビジョニングプロファイル (テストの為アプリをエクスポート(iOS、tvOS、watchOS) と テストのためアプリをエクスポート (Mac) をお読み下さい) を使う場合、テスターから受け取る抽象化されていないクラッシュレポートをインポートできるよう、アーカイブを保持して下さい。
また、TestFlight またはストアを使って配布したアプリのクラッシュも表示できます。あなたのアプリをアップロードした時、ビットコードを含めた場合は、ストアは .dSYM ファイルを保持し、デバイスウィンドウでクラッシュを表示する前に、それらをダウンロードしなければなりません。ビットコードを含めなかったか、店の外であなたのアプリを配布する場合は、あなたのアーカイブは既に .dSYM ファイルを含んでいます。
あなたのアプリをアップロードした時にビットコードを含めた場合は、最初に関連する .dSYM ファイルをダウンロードしてください。
dSYMs ファイルをダウンロードするには
- アーカイブオーガナイザで、アーカイブを選択します。
- [dSYMs をダウンロード] ボタンをクリックします。
Xcode は選択されたアーカイブ内に .dSYM ファイルを挿入します。
デバイスのクラッシュログを表示したり、クラッシュレポートをインポートするには
- [ウィンドウ(Window)] > [デバイス(Devices)] を選択してください。
- 必要に応じて、お使いの Mac にデバイスを接続します。
- [デバイス] の下でデバイスを選択し、[デバイスログを表示(View Device Log)] ボタンをクリックします。
- クラッシュログを表示するには、左側の列でそれを選択します。
- クラッシュレポートをインポートするには、シートの左側の列に Finder からクラッシュレポートをドラッグします。
- [完了(Done)] をクリックします。
シートが現れ、デバイス上でクラッシュログを表示します。
右側の詳細表示でクラッシュログを表示します。
Xcode でクラッシュの再現
クラッシュしたのと、完全に 同じビルドをテストするようにしてください。あなたがテストのために配布したり、iTunes Connect にアップロードしたすべてのアーカイブを保存して下さい。ビルド番号とバージョン番号を比較してクラッシュレポートと一致するアーカイブを Xcode で確認します。あなたがストアに提出したのと同じビルドをテストしているかどうかを判断するのと同じ手順に従ってください。
Mac アプリの場合、クラッシュを再現するために、クラッシュレポートと一致する OS X のバージョンの新規インストールでゲストアカウントを使用して下さい。分析したい問題が発生しないため、開発者や管理システムアカウントを使用してクラッシュを再現しようとしないでください。
サポートされているクラッシュレポート
クラッシュログは、これらの Xcode リリースで見られる、これらのオペレーティングシステムのリリースで実行しているアプリから収集されます。
ターゲットのクラッシュ | 実行中の OS | 利用可能 |
---|---|---|
iOS アプリ | iOS 8.2 以降 | Xcode 6.3 以降 |
iOS アプリ | iOS 8.3 以降 | Xcode 7.0 以降 |
Mac アプリ | OS X 10.10 以降 | Xcode 7.0 以降 |
Mac アプリの拡張機能 | OS X 10.11 以降 | Xcode 7.1 以降 |
WatchKit 拡張機能 | iOS 9.1 アプリとペアの watchOS2 アプリ | Xcode 7.1 以降 |
前の章
次の章