モバイル アプリが頻繁にクラッシュすると、ユーザー エクスペリエンスが低下し、開発ライフサイクルに遅延が生じます。 Group crashes [グループクラッシュ]ページは、開発チームがより安定した信頼性の高いモバイル アプリ エクスペリエンスをユーザーに提供できるように設計されています。
Group crashes [グループクラッシュ]ページでは次のことが可能です。
- 全体的なクラッシュの傾向を評価する:Crash rate percentage [クラッシュ率のパーセンテージ]とCrash-free users [クラッシュのないユーザーの]割合のグラフを確認して、クラッシュ発生の異常やパターンをすばやく特定します。
- より詳細な分析のためのフィルター: グループとフィルターを使用して、デバイスの種類、場所、カスタム データ ポイントなどの特定のクラッシュ属性に焦点を当てます。
- パターンを特定する:Crash location [クラッシュの場所]テーブルを調べて、場所、例外の種類、日付、頻度、アプリのバージョン、影響を受けるユーザーの数に関連する傾向を確認します。
- 個々のクラッシュを調査する: クラッシュ レポートを選択して、そのインタラクション トレイル、イベント トレイル、スレッドの詳細、属性、その他の関連情報を表示します。 デバッグのために詳細を再シンボル化したり、Xcode にエクスポートしたりすることもできます。
- クラッシュ ステータスの更新: クラッシュを
Resolved
[解決済み]としてマークするか、Resolved in specific version
[特定のバージョンで解決されました]などの他のステータス オプションから選択します。
one.newrelic.com > All capabilities > Mobile > Crashes (errors inbox):Group crashes [グループクラッシュ]タブを使用すると、クラッシュ率とクラッシュのないユーザーを一目で分析したり、特定のクラッシュの場所を詳しく調査したりできます。
推奨ワークフロー
これらの手順では、クラッシュ調査に対する推奨アプローチの概要を示しており、これにより、インシデントを完全に理解し、原因を特定し、効果的なデバッグ戦略を実装できるようになります。
クラッシュの詳細ビュー
Crash summary panel [クラッシュ概要パネル]には次の内容が含まれます。
- 発生チャート: 最初の検出以降、選択した期間におけるこの特定のクラッシュの頻度を視覚化します。 複数の発生が記録されている場合は、各インスタンスを移動できます。
- クラッシュ タイプの内訳: さまざまな OS バージョンまたは影響を受けるデバイス間でのこのクラッシュの分布を表示します。
解決されたクラッシュは、クラッシュを解決したユーザーと解決タイムスタンプを示すバナーで示されます。 モバイル監視のデータ保持期間ポリシーが適用され、必要に応じて履歴分析のために解決されたクラッシュでフィルタリングできることに注意してください。
one.newrelic.com > All capabilities > Mobile > Crashes (errors inbox): クラッシュの場所を選択して、Crash details [クラッシュの詳細]ページを開きます。
クラッシュをトリアージする
トリアージ セクションでは、表示している特定のエラー発生を、システムによって作成されたエラー グループに関連付けます。 これらのシステムによって作成されたエラー グループは、一意のフィンガープリントによって識別されます。 この固有のフィンガープリントにより、ステータスの更新や割り当てによってエラー グループをトリアージできるようになります。
エラー グループの作成方法の詳細については、 「エラー グループの仕組み」を参照してください。また、ステータスと割り当ての詳細については、 「エラー追跡」を参照してください。
one.newrelic.com > All capabilities > Mobile > Crashes (errors inbox) > Select a crash location :Crash details [クラッシュの詳細]ページから、ステータスの更新や割り当てを追加して、特定のエラー発生をトリアージできます。
クラッシュ属性
各クラッシュ サンプルには、クラッシュが発生したデバイス環境に関する詳細な情報が含まれます。
- アプリのバージョン: クラッシュが発生したアプリケーションの特定のバージョン。
- デバイス タイプ: クラッシュが発生したデバイスのモデル。
- OS バージョン: デバイスで実行されているオペレーティング システムのバージョン。
- 使用済み RAM : クラッシュ時にアプリケーションが使用していたメモリの量。
- ディスク空き容量: クラッシュが発生したときにデバイス上で使用可能なストレージ容量。
- 属性: クラッシュ レポートに関連付けられた詳細な属性。クラッシュのコンテキストをより深く知ることができます。
クラッシュの詳細を Xcode にエクスポートしたり、該当する場合はソースコードを再シンボル化して、トラブルシューティング プロセスを効率化することができます。
イベントトレイル
イベント トレイルは、クラッシュに至るまでのすべてのモバイルイベントの時系列ログを提供し、根本原因の分析に役立ちます。 これらは、デフォルトではイベントNew Relicモニター、またはカスタム イベントになります。 イベント トレイルは、最も古いイベント (通常はアプリのリリース) から時系列で並べられますが、次の項目を変更できます。
- 並べ替え: 昇順と降順を切り替えます。
- イベントフィルタリング:
interaction
[交流]、request
[リクエスト]、request error
[リクエストエラー]などのイベントタイプでフィルタリングします。 - イベントの詳細: 個々のイベントを展開して、その属性 (リクエスト イベントの場合は
responseTime
またはrequestUrl
など) を調べます。
イベントを並べ替えてフィルタリングした後、次の点を調べてクラッシュの原因となったイベントをもう少し詳しく調べることができます。
- カスタム ブレッドクラム: Record ブレッドクラム SDKを使用してカスタム
MobileBreadcrumb
イベントを作成します。 これにより、クラッシュ分析に関連する可能性のある特定のアプリケーション インタラクションをログに記録できます。 - 処理された例外: iOS および Android の
recordHandledException
SDK メソッドを使用して、アプリケーション内で例外が処理される場所に注釈を付けます。 これらの注釈はクラッシュ イベント トレイルに自動的に入力されます。
カスタム データを使用してクラッシュ イベント トレイルを強化するための詳細なガイダンスについては、 「クラッシュ イベント トレイルの記録」を参照してください。
クラッシュ分析ツールを最大限に活用するには、次の点に注意してください。
- モバイル SDK を使用して、カスタム
MobileBreadcrumb
またはMobileHandledException
イベントを作成します。 - ネットワーク要求データをキャプチャするための
MobileRequest
イベントを有効にします。
one.newrelic.com > All capabilities > Mobile > Crashes (errors inbox) > Select a crash location : イベント トレイルを使用して、特定のクラッシュの原因となったイベントを詳しく調べます。
モバイルスタックトレース
各クラッシュのスタックトレースはクラッシュの詳細の下に表示されます。 スタック内の各フレームには、関連付けられているライブラリまたはパッケージ名とメソッドが表示されます。 クラッシュごとに、モバイル エージェントはクラッシュの原因となったプログラミング エラーを含む特定のスタック フレームを検出しようとします。 正常に検出されると、そのスタック フレームは赤で表示されます。
- iOS アプリ: 各ビルドに対応する dSYM ファイルをアップロードした場合、ソースコードのメソッド名と行番号が表示されます。
- ProGuard を使用する Android アプリ: ProGuard マップのアップロードが有効になっている場合、パッケージ名とメソッド名の難読化が解除されます。
- Android ネイティブ クラッシュ レポート: これらのレポートには、ソース ファイル名と相対コード オフセットのみが表示されます。
電子メールアラートを使用すると、新しいクラッシュに迅速に対応できます。
Android ネイティブのクラッシュ レポート
New Relic Android エージェント バージョン 6.7.0では、ネイティブ クラッシュの追跡と診断、レポート、分析を支援する機能強化が導入されました。 これらの機能強化には、実行時にネイティブ コードレベルで発生するシグナル違反やその他の障害が含まれます。
これらの機能強化には次のものが含まれます。
ネイティブ クラッシュ レポート: 実行時にアプリによって報告される信号違反やその他のクラッシュ。これには以下が含まれます。
- シグナル4: 不正な命令
- シグナル6: 異常終了
- シグナル7: バスエラー/不正なメモリアクセス
- シグナル8: 浮動小数点例外
- シグナル1: セグメンテーション違反/無効なメモリ参照
ネイティブ ランタイム例外: ネイティブ エージェントは、実行時にアプリによってスローされた未処理の C++ 例外を、 処理済み例外として報告します。 処理されない例外は通常は致命的であり、アプリケーションをクラッシュさせます。
重要
ネイティブクラッシュレポートは、インキュベーション機能です。ネイティブのクラッシュ監視はせいぜい困難ですが、エージェントはこれらの状態を検出して報告するために最善を尽くします。一部の条件を見逃したり、不完全に報告したり、アプリケーションダッシュボードでこれらの条件を表示するのに時間がかかる場合があります。
ネイティブシンボルのシンボル化は、初期のNDKエージェントリリースではサポートされません。アプリのネイティブシンボルが存在しない場合、クラッシュによって生成されるスタックトレースは、これらの難読化されたラベルのみで構成され、簡単に読み取ることはできません。
ネイティブ クラッシュに関する詳細情報は、New Relic Mobile のCrash analysis UIで表示したり、電子メールでクラッシュ通知を受け取ったりすることができます。 また、 New Relicインサイトでクラッシュデータをさらに詳しく調査したり、チケットシステムと統合してさらに調査したりすることもできます。
トラブルシューティング
クラッシュしたセッションとクラッシュしていないセッションの属性値の間に統計的に有意な差がない場合、または適用されたフィルターに一致するプロファイルが利用できない場合は、プロファイルが無効になることに注意してください。