web-dev-qa-db-fra.com

Comment symboliser les plantages dans Xcode 7.3?

Pouvez-vous m'aider à symboliser mes accidents?

Dans Xcode 7.3, Fenêtre -> Organiseur -> Crashes, j'ai des rapports de crash de mes dernières versions de TestFlight. Elles ont été construites sur ce Mac et toutes les archives avec les dSYM correspondants se trouvent dans l’onglet Archives. L’application est divisée en un certain nombre de cadres et l’application principale. La plupart sont un mélange de Swift et d’Objectif C. Dans le journal des collisions, je peux voir le nom des cadres et de l’application répertoriés correctement, mais toutes les entrées de mes cadres et app sont en hex. UIKit est symbolisé très bien.

Lorsque je regarde dans iTunes Connect, le message "Oui" indique "Inclut les symboles" et me permet de télécharger les fichiers dSYM. Lors de la construction, l'option "Format des informations de débogage" a été définie sur "DWARF avec dSYM". J'ai essayé de définir "Supprimer les symboles de débogage lors de la copie" et "Supprimer le produit lié" sur "Non" pour voir si cela faisait une différence. Ça n'a pas.

Je ne trouve pas l'application symbolicatecrash sur mon système, pas même dans/usr/bin ou /Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash, mais j'ai un code Xcode plus ancien où je pourrait l'attraper. Cependant, cela ne résout plus les symboles.

J'ai le même problème dans Instruments, si je profile mon application, UIKit est symbolisé sans problème, mais mes frameworks et mon application ne montrent que des hexa.

Je sais qu'il y a eu beaucoup de publications à ce sujet, mais je les ai beaucoup parcourues depuis la période de la version 7.3 bêta et jusqu'à maintenant et je n'ai pas trouvé de solution

10
niklassaers

L'emplacement de symbolicatecrash a changé dans Xcode 7.3:

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

13
David Rodrigues

Après avoir lu ceci:

https://developer.Apple.com/library/content/technotes/tn2151/_index.html

vous découvrez que l'App Store est responsable de la symbolisation des rapports d'incident provenant de TestFlight - et non de Xcode. Et il semble que l'App Store ne soit pas très fiable pour le faire.

Voici une solution de contournement.

  1. Allez à l'onglet Archives dans la fenêtre "Organiseur" et assurez-vous que vous avez cliqué sur le bouton "Télécharger le fichier dSYMS ..." à droite de la page, quelle que soit la construction pour laquelle vous souhaitez symboliser un rapport d'incident. Ceci est requis si vous téléchargez en BitCode.

  2. Attachez un périphérique iOS afin qu'il apparaisse dans la fenêtre "Périphériques".

  3. Sélectionnez le périphérique et cliquez sur "Afficher les journaux du périphérique".

  4. Maintenant, retournez à la fenêtre de l'organiseur, sélectionnez l'onglet "Crashes", puis sélectionnez l'un des collisions non symboliques.

  5. Faites un clic droit dessus et sélectionnez "Afficher dans le Finder".

  6. Cliquez avec le bouton droit sur le groupe .xccrashpoint révélé et sélectionnez "Afficher le contenu du paquet".

  7. Accédez à DistributionInfos -> tout -> Journaux.

  8. Faites glisser l’un des fichiers .crash situés dans la partie gauche du volet "Afficher les journaux du périphérique", dans la fenêtre Périphériques.

  9. Attendez une seconde ou deux pour que Xcode symbolise le crash.

8
David K. Hess

Pareil ici. Avoir du mal à trouver le symbole après la mise à niveau vers 7.3.

Cependant, vous pouvez toujours utiliser le atos cependant. Vous pouvez trouver le tutoriel ici Un crash symbolique dans iOS8 avec Xcode 6 .1

2
Tim Yang

Je ne télécharge pas de symboles avec mon application, de sorte que l'App Store ne peut pas symboliser pour moi. J'ai utilisé la solution de contournement suivante pour symboliser tous les crashlogs téléchargés par XCode à partir du magasin. Ces instructions concernent XCode 8. Les chemins de l'application crash symbolicate varient d'une version à l'autre de XCode, mais les idées doivent être les mêmes dans chaque version.

  1. Placez vos symboles là où le symbolateur peut les trouver: Placez votre fichier de symboles (.dsym) dans votre répertoire Archives. Vous pouvez le trouver en allant à Organiseur, en cliquant sur une archive et en choisissant "Afficher dans le Finder". Accédez au répertoire Archives (par exemple, /Users/USERNAME/Library/Developer/Xcode/Archives) et placez-y votre fichier dsym. Il se peut que ce soit ailleurs, c'est que j'ai vérifié que celui-ci fonctionne.
  2. Téléchargez les journaux de crash: Dans XCode, assurez-vous d'avoir téléchargé les crashlogs de la construction que vous voulez symboliser (Organiseur-> Crashes, cliquez sur votre application, puis choisissez la version de votre application dans le panneau à à droite de la liste des applications).
  3. Localisez les journaux d'incidents sur le disque: Dans le panneau contenant la version de l'application et le numéro de build, cliquez avec le contexte sur l'un des plantages et choisissez "Afficher dans le Finder". Accédez au "Dossier sur les pannes" et notez cet emplacement, par exemple: /Users/USERNAME/Library/Developer/Xcode/Products/com.company-name.Your-App/VERSION/Crashes
  4. Configurez DEVELOPER_DIR pour symbolicatecrash sur la ligne de commande: Ouvrez une fenêtre de terminal et un CD dans le répertoire des incidents à l’étape 3 et définissez le paramètre DEVELOPER_DIR comme suit: cd /Users/USERNAME/Library/Developer/Xcode/Products/com.companyname.Your-App/VERSION/Crashes/ export set DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer
    (il doit s'agir de l'emplacement du répertoire "Developer" dans votre bundle d'applications XCode).
  5. Localisez le script symbolicatecrash : symbolicatecrash sait comment rechercher vos journaux d'incidents symbolicate à l'aide du dsym de l'étape 1. Apple le déplace de version en version de xcode. Vous pouvez le trouver comme ceci: find /Applications/Xcode.app/ -name symbolicatecrash. En XCode 8, c'est dans /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
  6. Sauvegardez votre dossier Crashes Vous voudrez peut-être sauvegarder votre dossier Crashes (/Users/USERNAME/Library/Developer/Xcode/Products/com.companyname.Your-App/VERSION/Crashes/)
  7. Symbolise toutes vos collisions : assurez-vous de toujours figurer dans le répertoire Crashes de l'étape 4 et tapez
    for i in `find . -type f -name \*.crash`; do cat $i | /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash --output $i.sym; mv $i.sym $i; done;
    Ceci symbolise chaque fichier .crash dans un fichier de sortie et le copie ensuite sur le fichier d'origine non symbolisé.
  8. Voir les accidents Retour à l'organisateur des accidents et afficher les accidents symboliques
1
Pat

Selon la documentation de Xcode 9.0 :

L'organisateur des collisions symbolise les journaux non symbolisés, s'ils sont sélectionnés, à l'aide d'un fichier .dSYM local indexé par Spotlight. (22550064)

Vous pouvez en savoir plus à ce sujet dans La documentation de Xcode .

0
mychrisdangelo

J'ai essayé de copier le fichier symbolicatecrash de xCode 7.2 et je l'ai collé dans xCode 7.3 dans le chemin suivant:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/Current/Resources/

J'utilise le script Crasher pour symboliser les rapports d'incident Comment utiliser Crasher

0
Mohamed Amer