のCrash report [クラッシュレポート]クラッシュに関する概要と詳細な情報を提供します。次のものが含まれます。
- デバイスとOSの内訳
- アプリバージョン
- 出現回数
- 影響を受けるユニークユーザー
- 事故に関連した出来事を時系列でまとめたもの
- 発生したサンプルからの詳細な情報
クラッシュレポートを見る
クラッシュレポートを表示するには
- one.newrelic.com > All capabilities > Mobile > (アプリを選択) > Exceptions > Crash analysisに移動します。
- クラッシュリスト テーブル から、任意の行を選択します。
- 選択したクラッシュレポートの 概要と詳細情報を確認する 。
- オプション: チャートデータの照会や共有.
- オプション: Xcodeにエクスポートしたり、ソースコードを再記号化してデバッグしやすくする。
- チケットを提出するには システムに統合されたオプションを選択してください。
- クラッシュレポートを閉じるにはレポートの上部で、 Mark resolved を選択します。
- に戻るにはクラッシュリスト テーブル: レポートの上部で Back to crash analysis を選択します。
クラッシュレポートのドリルダウン詳細の表示
New Relic の 標準的な UI 機能 を使って、詳細な情報にドリルダウンすることができます。 クラッシュレポート のページには、いくつかの追加オプションがあります。
Android ネイティブのクラッシュ レポート
New Relic Android エージェント バージョン 6.7.0以降、ネイティブ クラッシュの追跡と診断を支援するために、実行時に ネイティブ コード レベルで発生する信号違反やその他の障害を含めるようにレポートと分析が強化されました。
これらの機能強化には次のものが含まれます。
ネイティブクラッシュレポート-実行時にアプリによって報告されるシグナル違反やその他のクラッシュ(以下を含む)
- 信号4(不正な指示)
- 信号6(異常終了)
- 信号7(バスエラー/メモリアクセス不良)
- シグナル8(浮動小数点例外)
- シグナル11(セグメンテーション違反/無効なメモリ参照)
ネイティブ ランタイム例外 ネイティブ エージェントは、実行時にアプリによってスローされた未処理の C++ 例外をすべて、 処理された例外として報告します。未処理の例外は通常致命的であり、アプリケーションをクラッシュさせます。
アプリケーション無応答 (ANR) 状態ネイティブ エージェントは、アクティビティまたはサービス スレッドが Android の許容時間 (フォアグラウンド アクティビティの場合は 5 秒、サービスの場合は 5 ~ 200 秒) を超えてブロックされている アプリケーション無応答 状態を検出して報告します。ANR 状態は致命的な状態とはみなされないため、(クラッシュではなく) 処理された例外として報告されます。
重要
ネイティブクラッシュレポートは、インキュベーション機能です。ネイティブのクラッシュ監視はせいぜい困難ですが、エージェントはこれらの状態を検出して報告するために最善を尽くします。一部の条件を見逃したり、不完全に報告したり、アプリケーションダッシュボードでこれらの条件を表示するのに時間がかかる場合があります。
ネイティブシンボルのシンボル化は、初期のNDKエージェントリリースではサポートされません。アプリのネイティブシンボルが存在しない場合、クラッシュによって生成されるスタックトレースは、これらの難読化されたラベルのみで構成され、簡単に読み取ることはできません。
New Relic Mobileのクラッシュ分析UIでネイティブクラッシュに関する詳細情報を表示したり、電子メールでクラッシュ通知を受信したりできます。New Relic Insightsを使用してクラッシュデータをより深く調査したり、チケットシステムと統合してさらに調査したりすることもできます。
構成
構成では、新しいRelicエージェントを開始するアプリプロジェクトのbuild.gradleファイルに依存関係を追加する必要があります。
dependencies { implementation 'com.newrelic.agent.android:agent-ndk:1.+'}
Android ネイティブ エージェント アーティファクトはMavenCentralで見つけることができ、セマンティック バージョニング規則に従っています。リリースとダウンロードの詳細については、Android エージェントのリリース ノートを参照してください。
スタートアップ
New Relicエージェント(通常はMainActivity)が追加されているアプリコードで、エージェントを起動する前にNativeReporting機能フラグを有効にします。
NewRelic.enableFeature(FeatureFlag.NativeReporting);NewRelic .withApplicationToken("<appToken>") .start(this.getApplication());
ネイティブクラッシュレポートを無効にする
別のネイティブクラッシュレポートツールを使用する場合は、エージェントの初期化の前にNewRelic.disableFeature{FeatureFlag/NativeReporting)
を呼び出して、NewRelicMobileのネイティブクラッシュレポートを無効にします。例えば:
NewRelic.disableFeature(FeatureFlag.NativeReporting);NewRelic .withApplicationToken("<appToken>") .start(this.getApplication());
ネイティブクラッシュレポーターをデバッグする
Androidのクラッシュレポーティングは、他のクラッシュレポーティングフレームワークが登録されている場合は、uncaught exception handlerを連鎖させることで、他のクラッシュレポーティングフレームワークと連携するように設計されています。
レポート中に発生した問題はすべてlogcatに表示されます。New Relicが違反をトラップするたびに、 DEBUG
レベルに記録されます。たとえば、セグメント違反の場合、次のように表示されます。
Signal 11 intercepted: Segmentation violation (invalid memory reference)Invoking previous handler for signal 11
ネイティブレポートの配信は次のアプリの呼び出しまで延期されるため、アプリが再度起動されるまで、NewRelicMobileのユーザーインターフェイスにクラッシュレポートは表示されません。クラッシュが発生した場合、ネイティブエージェントは通常、レポートを処理するのに十分な時間や安定性がありません。代わりに、レポートデータはローカルストレージにすばやく書き込まれ、次にアプリを起動したときに処理されます。
トラブルシューティング
ネイティブレポートは、 /data/data/{app package name}/cache/newrelic/reports
のJSONファイルとしてデバイスに保存されます。このディレクトリには、クラッシュ後のアプリの起動後にレポートが含まれていてはなりません。他のエージェントランタイム情報と同様に、ネイティブエージェントはそのステータスをlogcatに書き込み、エージェントランタイムステータスとブレンドします。Androidエージェントのログタグはcom.newrelic.android
であり、'adb logcat |を実行することで、他のランタイムログから分離できます。 grep "com.newrelic.android"シェルから。