Información general

Habilita la notificación de fallos y el seguimiento de errores para obtener informes completos de fallos y tendencias de errores con Real User Monitoring.

Tus informes de fallos aparecen en Seguimiento de errores.

Configuración

Si aún no has configurado el SDK de Flutter en Datadog, sigue las instrucciones de configuración en la aplicación o consulta la [documentación de configuración de Flutter3.

Añadir el seguimiento de errores de Dart

Si utilizas DatadogSdk.runApp, el SDK de Flutter de Datadog rastrea e informa automáticamente de las excepciones de Dart no detectadas.

Si no estás utilizando DatadogSdk.runApp, necesitas configurar el seguimiento de errores de Dart manualmente con el siguiente código antes de inicializar Datadog:

final originalOnError = FlutterError.onError;
FlutterError.onError = (details) {
  DatadogSdk.instance.rum?.handleFlutterError(details);
  originalOnError?.call(details);
};
final platformOriginalOnError = PlatformDispatcher.instance.onError;
PlatformDispatcher.instance.onError = (e, st) {
  DatadogSdk.instance.rum?.addErrorInfo(
    e.toString(),
    RumErrorSource.source,
    stackTrace: st,
  );
  return platformOriginalOnError?.call(e, st) ?? false;
};

Añadir la notificación de fallos nativa

Actualiza tu fragmento de inicialización para habilitar la la notificación de fallos nativa para iOS y Android configurando nativeCrashReportEnabled como true.

Por ejemplo:

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>',
  ),
);

Si tu aplicación sufre un fallo fatal, el SDK de Flutter de Datadog carga un informe de fallo en Datadog después del reinicio de tu aplicación. Para errores no fatales, el SDK de Flutter de Datadog carga estos errores con otros datos RUM.

Obtener trazas (traces) de stack tecnológico desofuscadas

Los archivos de asignación se utilizan para desofuscar trazas de stack tecnológico, lo que ayuda a depurar errores. Mediante el ID de compilación único que se genera, Datadog hace coincidir automáticamente las trazas de stack tecnológico correctas con los archivos de asignación correspondientes. Esto garantiza que, independientemente de cuándo se haya cargado el archivo de asignación (ya sea durante la compilación de preproducción o de producción), se disponga de la información correcta para garantizar procesos de control de calidad eficaces al revisar fallos y errores notificados en Datadog.

Para las aplicaciones Flutter, la correspondencia entre las trazas de stack tecnológico y los mapas de origen se basa en tus campos service, version, variant y architecture.

Carga de archivos de símbolos en Datadog

Los informes de fallos iOS se recopilan en un formato no procesado y contienen principalmente direcciones de memoria. Para convertir estas direcciones en información de símbolos legible, Datadog necesita que cargues archivos .dSYM, que se generan durante el proceso de compilación de tu aplicación.

Los informes de fallos y errores enviados desde aplicaciones iOS Flutter y Android que se crean con la opción --split-debug-info configurada o con la opción --obfuscate configurada también estarán en un formato sin procesar u ofuscado. Para estas aplicaciones, es necesario cargar el archivo de asignación Proguard de Android y los archivos de símbolos de Dart generados por el proceso de compilación de Flutter.

Los errores enviados desde las aplicaciones web Flutter enviarán números de archivos y de líneas de JavaScript sin asignar, que deben asignarse a números de archivos y de líneas de Dart. Para estas aplicaciones, debes cargar el mapa de origen JavaScript generado por el proceso de compilación de Flutter.

La herramienta de línea de comandos @Datadog/Datadog-ci permite cargar todos los archivos necesarios (archivos dSYM, de asignación Proguard Android y de símbolos de Dart) en un solo comando.

En primer lugar, instala la herramienta datadog-ci siguiendo las instrucciones anteriores y crea un archivo datadog-ci.json en la raíz de tu proyecto, que contenga tu clave de API y (opcionalmente) tu sitio Datadog:

{
  "apiKey": "<YOUR_DATADOG_API_KEY>",
  "datadogSite": "datadoghq.eu"  // Optional if you are using datadoghq.com
}

Dado que este archivo contiene tu clave de API, no debe registrarse en el control de versiones.

También puedes configurar las variables de entorno DATADOG_API_KEY y DATADOG_SITE.

A continuación, puedes utilizar el siguiente comando para cargar todos los archivos necesarios para la simbolización y desofuscación de tus informes de fallos:

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

Nota: Volver a cargar un mapa de origen no anula el existente si la versión no ha cambiado.

Para ver la lista completa de opciones, consulta la documentación de símbolos Flutter datadog-ci.

Limitaciones

Los mapas de origen y los archivos dSYM están limitados a 500 MB cada uno.

Los mapas de origen y los archivos dSYM están limitados a 500 MB cada uno.

Para probar tu implementación

Para verificar la configuración de las notificaciones de fallos y el seguimiento de errores de Flutter, necesitas generar un error en tu aplicación y confirmar que el error aparece en Datadog.

  1. Ejecuta tu aplicación en un simulador, emulador o dispositivo real. Si estás ejecutando en iOS, asegúrate de que el depurador no está conectado. De lo contrario, Xcode captura el fallo antes de que lo haga el SDK de Datadog.

  2. Ejecuta código que contenga un error o fallo. Por ejemplo:

    void throwError() {
     throw Exception("My Exception")
    }
    
  3. Para los informes de error ofuscados que no provocan un fallo, puedes verificar la simbolización y la desofuscación en Rastreo de errores.

  4. Para los fallos, después de que se produzcan, reinicia tu aplicación y espera a que el SDK de Flutter cargue el informe del fallo en Rastreo de errores.

Opciones y números de compilación

Datadog utiliza la combinación de service-name, version y flavor para localizar los símbolos correctos para la desofuscación. Para que tus informes de errores tengan información completa, los parámetros enviados al comando datadog-ci y los parámetros definidos en DatadogConfiguration deben coincidir exactamente.

Si estás utilizando opciones de aplicación en Flutter, necesitas definir el nombre de la opción en DatadogConfiguration.flavor ya que no podemos detectar la opción automáticamente. A continuación, puede pasarlo al parámetro --flavor del comando datadog-ci:

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

El SDK de Datadog detecta automáticamente el número de versión de tu aplicación especificado en tu pubspec.yaml hasta el número de compilación, pero sin incluirlo. Si utilizas números de compilación como parte de la versión de tu aplicación y necesitas cargar símbolos para cada compilación, debes añadir la versión a DatadogConfiguration.version. A continuación, puede pasar esto al parámetro --version del comando datadog-ci:

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

Nota: Datadog utiliza etiquetas (tags) para las versiones que no admiten +. Todas las herramientas sustituyen automáticamente + por - para que las etiquetas de versión puedan buscarse en Datadog.

Referencias adicionales