38 votes

Xcode 4 n'arrive pas à symboliser le journal des collisions

Je viens de mettre à jour mon Xcode vers X.Y.Z. Maintenant j'ai un problème avec la symbolisation des crash logs reçus de mon testeur et même de mon téléphone.

Lorsque je crée la distribution AdHoc, j'utilise le schéma "Arhive", puis je crée le fichier *.ipa en le chantant avec mes identifiants de développeur.

Est-ce le problème ? Et je n'arrive pas à trouver les fichiers dSym pour ces constructions AdHoc.

0 votes

J'ai trouvé un moyen très efficace de résoudre ce problème en utilisant Crittercism DSK.

24voto

Simon Whitaker Points 11881

Pour compléter la réponse de Coob, je trouve que l'ajout de ces répertoires à la liste d'ignorés de Spotlight (Préférences système → Spotlight → Confidentialité) est utile :

  • ~/Library/Developer/Xcode/DerivedData/ (artefacts de construction de Xcode 4)
  • ~/Library/Application Support/iPhone Simulator/ (système de fichiers pour le simulateur iPhone)

Comme ceci :

Spotlight settings to suppress unhelpful .app files

(Voir cet article de blog pour plus de détails).

Mise à jour : à partir d'un commentaire de joerick : "Cela fonctionne, mais cela signifie également que Instruments.app ne pouvait pas trouver les symboles de débogage, de sorte que j'ai dû supprimer DerivedData de la liste de confidentialité pour faire du profilage." - Gardez cela à l'esprit si vous utilisez Instruments.

0 votes

C'est une bonne idée, jusqu'à ce qu'une solution adéquate soit mise en place. J'ai déposé un rapport de bogue auprès d'Apple, nous verrons comment les choses évoluent.

0 votes

@Jonathan - Oui, il s'agit bien d'une solution provisoire. J'espère qu'Apple va résoudre ce problème dans le prochain patch de 4,5 Go :-)

0 votes

J'ai dû ajouter "~/Bibliothèque/MobileDevice/Archived Applications" pour que cela fonctionne.

24voto

Pour moi, ni la modification de la ligne 323 ni les exclusions Spotlight n'ont permis de résoudre le problème. J'ai donc recherché les problèmes dans symbolicatecrash y a publié une version corrigée sur github . Remplacez simplement /usr/local/bin/symbolicatecrash et vos rapports de crash iOS recommenceront à symboliser.

Ce correctif peut ne pas fonctionner pour les applications Mac, car il fait des suppositions sur la structure du répertoire .xcarchive qui ne semblent pas être valables pour les applications de bureau.

Editar : vous pouvez encore rencontrer des problèmes si Spotlight n'a pas indexé vos archives. Vous pouvez forcer l'indexation en exécutant la commande suivante dans un terminal :

mdimport ~/Library/Developer/Xcode/Archives/

Plus d'informations sur le dépannage aquí .

1 votes

Cela a fonctionné pour moi alors que les changements Spotlight/die n'ont pas fonctionné. Cela m'a permis d'éviter de nombreuses manipulations ; merci beaucoup. N'oubliez pas que vous devrez remplacer symbolicatecrash par le chemin complet si vous voulez que cela fonctionne dans xcode ( /Developer/Platforms/iPhoneOS.platform/Developer/Library/Pr‌​ivateFrameworks/DTDe‌​viceKit.framework/Ve‌​rsions/A/Resources/ )

0 votes

Votre custom symbolicatecrash m'a fait plaisir alors que les exceptions de Spotlight n'ont rien fait. Quoi qu'il en soit, merci à tous pour toutes les réponses utiles !

7 votes

Avertissement : Lorsque j'ai essayé d'utiliser ce script, il a symbolisé mon fichier .crash, mais les symboles étaient tous erronés. Les méthodes affichées dans la pile provenaient de parties entièrement différentes du code qui n'étaient pas liées et hors contexte. J'ai finalement réussi à obtenir une sortie correctement symbolisée en copiant mes fichiers .app et .dSYM hors de mon .xcarchive et en les plaçant à côté du rapport de crash. J'ai vérifié que Spotlight pouvait trouver ces fichiers, puis j'ai fait glisser le rapport d'accident dans l'organiseur.

3voto

Alastair Stuart Points 2619

Le script de symbolisation script a un problème pour trouver le bon binaire/dSYM. Il utilise Spotlight pour ce faire et s'arrête souvent. Voici quelques solutions à essayer :

  1. Assurez-vous que votre .app ne contient pas d'espace. espace.

  2. Il se peut que l'on trouve la version de de votre application installée sur le simulateur (à l'envers, mais il le fait parfois pour moi). parfois pour moi). Réinitialisez votre simulateur.

  3. Effacez votre répertoire de construction.

0 votes

@coob, Merci pour votre réponse. Mon application n'a pas d'espace dans son nom. Je n'arrive pas à trouver le fichier dSym après la construction de l'archive. Si je révèle dans le Finder l'archive de l'application, je ne trouve qu'un fichier .xcodearchive. Aucun fichier dSym ou autre.

0 votes

Utilisez-vous XCode 3 ou 4 ? Je ne suis pas familier avec 4, quand je 'Reveal in Finder an archived application' sur XCode 3 il me montre un répertoire comme '1DE8BA58-B733-4FA6-88E0-8F9F71297070.apparchive' dans '/Users/al/Bibliothèque/Application Support/Developer/Shared/Archived Applications' qui a l'application, une plist et le dsym à l'intérieur.

0 votes

XCode 4 le place dans ~/Bibliothèque/Developer/Archives. Ensuite, un répertoire par date, puis un paquet .xcarchive. Dans le finder, contrôle-clic

3voto

Hiltmon Points 1255

J'ai eu le même problème aujourd'hui. D'après mes recherches sur le web, il y a un problème avec les bibliothèques armv6 qui fait échouer le processus de symbolisation. J'ai trouvé la réponse dans la page Forums de développement ici .

Pour ceux qui n'ont pas d'accès, vous devez créer une copie du fichier symbolicatecrash script de /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/ . Modifiez le fichier et remplacez le "die" de la ligne 323 par un "print" (c'est la raison pour laquelle cela ne fonctionne pas, le script échoue ici).

Exécutez ensuite symbolicatecrash par rapport à votre journal de bord. Vous verrez l'erreur à partir de la ligne 323, mais elle symbolisera ensuite tous les éléments suivants votre lignes et variables. Il échoue toujours pour les bibliothèques système, mais il fournit suffisamment d'informations pour corriger vos propres bogues.

J'espère que cela vous aidera.

0voto

Nic Points 1

Je crois que j'ai eu ce problème, ou quelque chose de similaire. Xcode 4.0 n'affichait pas les symboles pour un crash que j'avais eu d'un testeur. Je semble avoir résolu le problème en ouvrant le fichier xarchive que j'avais créé, et en copiant le fichier dsym à partir de celui-ci (clic droit et 'view package contents') pour le placer à côté dans le dossier d'archive. Je ne peux pas garantir que c'était la solution - j'essayais un certain nombre d'autres solutions à l'époque, mais je sais que j'ai les symboles maintenant et que je ne les avais pas avant. Cela vaut-il la peine d'essayer ?

0 votes

J'ai eu quelques problèmes avec XCode 4.0 car il n'archive pas de la même manière que Xcode 3. Il crée un xarchive, je dois ensuite créer un .ipa, et - comme c'était la façon dont je faisais les choses dans le passé - j'en ai extrait le paquet .app pour l'envoyer à mon testeur. Je pense que xcode ne trouve pas le dsym puisqu'il est interne au paquet xarchive lui-même.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X