概要

クラッシュレポートとエラー追跡を有効にすると、リアルユーザーモニタリングで包括的なクラッシュレポートとエラートレンドを取得できます。

クラッシュレポートは Error Tracking に表示されます。

セットアップ

Datadog Flutter SDK for RUM をまだセットアップしていない場合は、アプリ内セットアップ手順に従うか、Flutter セットアップドキュメントを参照してください。

ネイティブクラッシュレポートの追加

初期化スニペットを更新し、nativeCrashReportEnabledtrue に設定することで iOS と Android のネイティブクラッシュレポートを有効化します。

例:

final configuration = DatadogConfiguration(
  clientToken: '<DD_CLIENT_TOKEN>'
  env: '<DD_ENV>'
  site: DatadogSite.us1,
  nativeCrashReportEnabled: true, // Set this flag
  loggingConfiguration: DatadogLoggingConfiguration(),
  rumConfiguration: DatadogRumConfiguration(
    applicationId: '<DD_APP_ID>',
  ),
);
DatadogSdk.instance.initialize(configuration);

アプリケーションが致命的なクラッシュに見舞われた場合、アプリケーションの再起動後に、Datadog Flutter SDK は Datadog にクラッシュレポートをアップロードします。致命的でないエラーの場合、Datadog Flutter SDK はこれらのエラーを他の RUM データと共にアップロードします。

Datadog へのシンボルファイルのアップロード

ネイティブ iOS クラッシュレポートは生のフォーマットで収集され、そのほとんどがメモリアドレスを含んでいます。これらのアドレスを読みやすいシンボル情報にマッピングするために、Datadog は .dSYM ファイルのアップロードを必要とし、これはアプリケーションのビルドプロセスで生成されます。

--split-debug-info オプションセットと --obfuscate オプションセットでビルドされたすべてのクラッシュレポートについて、その Android Proguard マッピングファイルと Flutter ビルドプロセスによって生成された Dart シンボルファイルをアップロードする必要があります。

コマンドラインツール @datadog/datadog-ci は、必要なファイル (dSYMs、Android Proguard Mapping、Dart Symbol Files) を 1 つのコマンドでアップロードすることに対応しています。

まず、上記の手順で datadog-ci ツールをインストールし、プロジェクトのルートに datadog-ci.json ファイルを作成し、API キーと (オプションで) Datadog サイトを記述します。

{
  "apiKey": "<YOUR_DATADOG_API_KEY>",
  "datadogSite": "datadoghq.eu"  // datadoghq.com を使用している場合はオプション
}

このファイルには API キーが含まれているため、バージョン管理にはチェックインしないでください。

代わりに、環境変数 DATADOG_API_KEYDATADOG_SITE を設定することも可能です。

次に、以下のコマンドを使用して、クラッシュレポートのシンボル化および難読化解除に必要なすべてのファイルをアップロードすることができます。

datadog-ci flutter-symbols upload --service-name <your_service_name> --dart-symbols-location <location_of_dart_symbols> --android-mapping --ios-dsyms

: バージョンに変更がない場合、ソースマップを再アップロードしても既存のものはオーバーライドされません。

オプションの完全なリストは、datadog-ci Flutter Symbols のドキュメントを参照してください。

高度な構成 - フレーバーとビルド番号

Datadog は service-nameversionflavor の組み合わせを使用して、難読化解除のための正しいシンボルを探します。クラッシュレポートが完全な情報を持つためには、datadog-ci コマンドに送られるパラメーターと DatadogConfiguration で設定されたパラメーターが完全に一致する必要があります。

Flutter でアプリのフレーバーを使用している場合、フレーバーを自動検出できないため、DatadogConfiguration.flavor でフレーバーの名前を設定する必要があります。そして、これを datadog-ci コマンドの --flavor パラメーターに渡すことができます。

datadog-ci flutter-symbols upload --service-name <your_service_name> --dart-symbols-location <location_of_dart_symbols> --android-mapping --ios-dsyms --flavor my_flavor

Datadog SDK は、pubspec.yaml で指定されたアプリケーションのバージョン番号を自動的に検出しますが、これにはビルド番号は含まれません。もし、アプリケーションのバージョンの一部としてビルド番号を使用していて、ビルドごとにシンボルをアップロードする必要がある場合は、バージョンを DatadogConfiguration.version に追加する必要があります。そして、これを datadog-ci コマンドの --version パラメーターに渡すことができます。

datadog-ci flutter-symbols upload --service-name <your_service_name> --dart-symbols-location <location_of_dart_symbols> --android-mapping --ios-dsyms --version 1.2.3+22

Datadog は + を許さないバージョンのタグを使用することに注意してください。すべてのツールは、バージョンタグが Datadog で検索できるように、自動的に +- に置き換えます。

その他の参考資料