Dépannage de Crashlytics et questions fréquentes


Cette page fournit une aide pour le dépannage et des réponses aux questions fréquentes sur l'utilisation de Crashlytics. Si vous ne trouvez pas ce que vous cherchez ou si vous avez besoin d'aide supplémentaire, contactez l'assistance Firebase.

Dépannage général/FAQ

Vous remarquerez peut-être deux formats différents pour les problèmes listés dans le tableau Problèmes de la console Firebase. Vous remarquerez peut-être également une fonctionnalité appelée "variantes" dans certains de vos problèmes. Voici pourquoi :

Début 2023, nous avons déployé un moteur d'analyse amélioré pour regrouper les événements, ainsi qu'une nouvelle interface et des fonctionnalités avancées pour les nouveaux problèmes (comme les variantes). Pour en savoir plus, consultez notre article de blog récent. Vous trouverez ci-dessous les points forts.

Crashlytics analyse tous les événements de votre application (comme les plantages, les erreurs non fatales et les erreurs ANR) et crée des groupes d'événements appelés problèmes. Tous les événements d'un problème ont un point de défaillance commun.

Pour regrouper les événements dans ces problèmes, le moteur d'analyse amélioré examine désormais de nombreux aspects de l'événement, y compris les frames dans la trace de la pile, le message d'exception, le code d'erreur et d'autres caractéristiques de la plate-forme ou du type d'erreur.

Toutefois, dans ce groupe d'événements, les traces de la pile menant à la défaillance peuvent être différentes. Une trace de pile différente peut indiquer une cause première différente. Pour représenter cette différence possible dans un problème, nous créons désormais des variantes dans les problèmes. Chaque variante est un sous-groupe d'événements d'un problème ayant le même point de défaillance et une trace de pile similaire. Avec les variantes, vous pouvez déboguer les traces de pile les plus courantes d'un problème et déterminer si différentes causes sont à l'origine de l'échec.

Voici ce que vous allez constater avec ces améliorations:

  • Métadonnées remaniées affichées dans la ligne du problème
    Vous pouvez désormais comprendre et trier plus facilement les problèmes de votre application.

  • Moins de problèmes en double
    Un changement de numéro de ligne ne génère pas de nouveau problème.

  • Débogage plus facile des problèmes complexes avec différentes causes
    Utilisez des variantes pour déboguer les traces de pile les plus courantes d'un problème.

  • Alertes et signaux plus pertinents
    Un nouveau problème représente en fait un nouveau bug.

  • Recherche plus efficace
    Chaque problème contient plus de métadonnées pouvant être recherchées, comme le type d'exception et le nom du package.

Voici comment ces améliorations seront déployées:

  • Lorsque nous recevons de nouveaux événements de votre application, nous vérifions s'ils correspondent à un problème existant.

  • En l'absence de correspondance, nous appliquerons automatiquement notre algorithme de regroupement d'événements plus intelligent à l'événement et créerons un nouveau problème avec la conception repensée des métadonnées.

Il s'agit de la première mise à jour importante que nous apportons à notre regroupement d'événements. Si vous avez des commentaires ou rencontrez des problèmes, n'hésitez pas à nous en faire part en signalant le problème .

Si vous ne voyez pas de métriques sans plantage (comme les utilisateurs et les sessions sans plantage) et/ou d'alertes de vitesse, assurez-vous d'utiliser le SDK Crashlytics 10.8.0 ou version ultérieure.

Si vous ne voyez pas de journaux de fil d'Ariane, nous vous recommandons de vérifier la configuration de votre application pour Google Analytics. Assurez-vous de remplir les conditions suivantes:

Pour importer les dSYM de votre projet et obtenir une sortie détaillée, vérifiez les points suivants:

  1. Assurez-vous que la phase de compilation de votre projet contient le script d'exécution Crashlytics, qui permet à Xcode d'importer les dSYM de votre projet au moment de la compilation (consultez la section Initialiser Crashlytics pour savoir comment ajouter le script). Après avoir mis à jour votre projet, forcez un plantage et vérifiez qu'il apparaît dans le tableau de bord Crashlytics.

  2. Si une alerte "dSYM manquant" s'affiche dans la console Firebase, vérifiez Xcode pour vous assurer qu'il génère correctement des dSYM pour la compilation.

  3. Si Xcode produit correctement des fichiers dSYM et que des fichiers dSYM sont toujours manquants, il est probable que l'outil d'exécution du script se bloque lors de l'importation des fichiers dSYM. Dans ce cas, essayez chacune des solutions suivantes:

    • Assurez-vous d'utiliser la dernière version de Crashlytics.

    • Importez manuellement les fichiers dSYM manquants:

      • Option 1:utilisez l'option "Glisser-déposer" de la console dans l'onglet dSYM pour importer une archive ZIP contenant les fichiers dSYM manquants.
      • Option 2:Utilisez le script upload-symbols pour importer les fichiers dSYM manquants pour les UUID fournis dans l'onglet dSYM.
  4. Si des dSYM manquent toujours ou si les importations ne fonctionnent toujours pas, contactez l'assistance Firebase et veillez à inclure vos journaux.

Si vos traces de pile semblent mal décomposées, vérifiez les points suivants:

  • Si les frames de la bibliothèque de votre application ne comportent pas de références au code de votre application, assurez-vous que -fomit-frame-pointer n'est pas défini comme indicateur de compilation.

  • Si plusieurs cadres (Missing) s'affichent pour la bibliothèque de votre application, vérifiez si des dSYM facultatifs sont répertoriés comme manquants (pour la version de l'application concernée) dans l'onglet Crashlytics dSYM de la console Firebase. Si c'est le cas, suivez la procédure de dépannage "Alerte de fichier dSYM manquant" dans la FAQ sur les fichiers dSYM manquants/non importés sur cette page. Notez que l'importation de ces dSYM ne décode pas les plantages déjà survenus, mais elle permet de garantir la décompilation des plantages futurs.

Les notes permettent aux membres du projet de commenter des problèmes spécifiques en posant des questions, en fournissant des informations sur l'état, etc.

Lorsqu'un membre d'un projet publie une note, elle est associée à l'adresse e-mail de son compte Google. Cette adresse e-mail, ainsi que la note, sont visibles par tous les membres du projet autorisés à les consulter.

Vous trouverez ci-dessous l'accès requis pour afficher, écrire et supprimer des notes:

Consultez Comprendre les métriques d'utilisation sans plantage.

Les notes permettent aux membres du projet de commenter des problèmes spécifiques en posant des questions, en fournissant des informations sur l'état, etc.

Lorsqu'un membre d'un projet publie une note, elle est associée à l'adresse e-mail de son compte Google. Cette adresse e-mail, ainsi que la note, sont visibles par tous les membres du projet autorisés à les consulter.

Vous trouverez ci-dessous l'accès requis pour afficher, écrire et supprimer des notes:

Intégrations

Si votre projet utilise Crashlytics avec le SDK Google Mobile Ads, il est probable que les outils de signalement des plantages interfèrent lors de l'enregistrement des gestionnaires d'exceptions. Pour résoudre le problème, désactivez le signalement des plantages dans le SDK Mobile Ads en appelant disableSDKCrashReporting.

Une fois que vous avez associé Crashlytics à BigQuery, les nouveaux ensembles de données que vous créez sont automatiquement situés aux États-Unis, quel que soit l'emplacement de votre projet Firebase.

Compatibilité avec les plates-formes

Oui, vous pouvez implémenter Crashlytics dans des projets macOS et tvOS. Assurez-vous d'inclure la version 8.9.0 ou ultérieure du SDK Firebase pour Google Analytics afin que les plantages aient accès aux métriques collectées par Google Analytics (utilisateurs sans plantage, dernière version, alertes de vitesse et journaux de repères).

Vous pouvez désormais signaler des plantages pour plusieurs applications dans un même projet Firebase, même si les applications sont compilées pour différentes plates-formes Apple (par exemple, iOS, tvOS et Mac Catalyst). Auparavant, vous deviez séparer les applications en projets Firebase individuels si elles contenaient le même ID de bundle.

Problèmes régressifs

Un problème a régressé lorsque vous l'avez déjà fermé, mais que Crashlytics reçoit un nouveau rapport indiquant qu'il est à nouveau survenu. Crashlytics rouvre automatiquement ces problèmes de régression afin que vous puissiez les résoudre en fonction de votre application.

Voici un exemple de scénario expliquant comment Crashlytics catégorise un problème en tant que régression:

  1. Pour la première fois, Crashlytics reçoit un rapport d'erreur concernant l'erreur "A". Crashlytics ouvre un problème correspondant à ce plantage (problème "A").
  2. Vous corrigez rapidement ce bug, fermez le problème A, puis publiez une nouvelle version de votre application.
  3. Crashlytics reçoit un autre signalement concernant le problème A après que vous l'avez clôturé.
    • Si le rapport provient d'une version d'application que Crashlytics connaissait lorsque vous avez clôturé le problème (c'est-à-dire que la version a envoyé un rapport d'erreur pour tout plantage), Crashlytics ne considérera pas le problème comme une régression. Le problème restera clôturé.
    • Si le rapport provient d'une version d'application dont Crashlytics n'avait pas connaissance lorsque vous avez clôturé le problème (c'est-à-dire que la version n'a jamais envoyé aucun rapport d'erreur pour un plantage), Crashlytics considère que le problème est en régression et le rouvre.

Lorsqu'un problème régresse, nous envoyons une alerte de détection de régression et ajoutons un signal de régression au problème pour vous indiquer que Crashlytics l'a rouvert. Si vous ne souhaitez pas qu'un problème soit à nouveau ouvert en raison de notre algorithme de régression, mettez-le "en sourdine" au lieu de le fermer.

Si un rapport provient d'une ancienne version de l'application qui n'a jamais envoyé de rapports d'erreur lorsque vous avez clôturé le problème, Crashlytics considère que le problème a régressé et le rouvre.

Cette situation peut se produire dans le cas suivant: vous avez corrigé un bug et publié une nouvelle version de votre application, mais des utilisateurs utilisent toujours d'anciennes versions sans correction du bug. Si, par hasard, l'une de ces anciennes versions n'a jamais envoyé de rapports de plantage lorsque vous avez clos le problème et que ces utilisateurs commencent à rencontrer le bug, ces rapports de plantage déclencheront un problème de régression.

Si vous ne souhaitez pas qu'un problème soit à nouveau ouvert en raison de notre algorithme de régression, "coupez le son" du problème au lieu de le fermer.