• /
  • EnglishEspañol日本語한국어Português
  • ログイン今すぐ開始

この機械翻訳は、参考として提供されています。

英語版と翻訳版に矛盾がある場合は、英語版が優先されます。詳細については、このページを参照してください。

問題を作成する

Androidエージェントのネイティブクラッシュレポート

New Relic Androidエージェントバージョン6.7.0以降、ネイティブクラッシュの追跡と診断に役立つように、レポートと分析が拡張され、実行時にネイティブコードレベルで発生する信号違反やその他の障害が含まれるようになりました。

これらの機能強化には次のものが含まれます。

  • ネイティブ クラッシュ レポート: Android エージェントは、実行時にアプリによって報告された違反やその他のクラッシュを通知します。これには以下が含まれます。

    • 信号4(不正な指示)
    • 信号6(異常終了)
    • 信号7(バスエラー/メモリアクセス不良)
    • シグナル8(浮動小数点例外)
    • シグナル11(セグメンテーション違反/無効なメモリ参照)
  • ネイティブ ランタイム例外: ネイティブ エージェントは、実行時にアプリによってスローされた未処理の C++ 例外を報告し、それらを処理済み例外として報告します。 処理されない例外は通常致命的であり、アプリケーションをクラッシュさせます。

  • アプリケーションが応答しない (ANR) 状態: ネイティブ エージェントは、アクティビティまたはサービス スレッドが Android の許容時間 (フォアグラウンド アクティビティの場合は 5 秒、サービスの場合は 5 ~ 200 秒) を超えてブロックされているアプリケーションが応答しない状態を検出して報告します。 ANR 状態は致命的な状態とは見なされないため、クラッシュではなく、 処理された例外として報告されます。

重要

ネイティブクラッシュレポートは、インキュベーション機能です。ネイティブのクラッシュ監視はせいぜい困難ですが、エージェントはこれらの状態を検出して報告するために最善を尽くします。一部の条件を見逃したり、不完全に報告したり、アプリケーションダッシュボードでこれらの条件を表示するのに時間がかかる場合があります。

ネイティブシンボルのシンボル化は、初期のNDKエージェントリリースではサポートされません。アプリのネイティブシンボルが存在しない場合、クラッシュによって生成されるスタックトレースは、これらの難読化されたラベルのみで構成され、簡単に読み取ることはできません。

New Relic Mobileのクラッシュ分析UIでネイティブクラッシュに関する詳細情報を表示したり、電子メールでクラッシュ通知を受信したりできます。New Relic Insightsを使用してクラッシュデータをより深く調査したり、チケットシステムと統合してさらに調査したりすることもできます。

構成

設定では、New 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("APP_TOKEN")
.start(this.getApplication());

ネイティブクラッシュレポートを無効にする

別のネイティブ クラッシュ レポート ツールを使用する場合は、エージェントの初期化の前にNewRelic.disableFeature(FeatureFlag/NativeReporting)を呼び出して、ネイティブ クラッシュ レポートを無効にします。 例えば:

NewRelic.disableFeature(FeatureFlag.NativeReporting);
NewRelic
.withApplicationToken("APP_TOKEN")
.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 に書き込みます。 エージェントのログ タグはcom.newrelic.androidであり、シェルからadb logcat | grep "com.newrelic.android"を実行することで他のランタイム ログから分離できます。

Copyright © 2024 New Relic株式会社。

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.