Traitement des fichiers de symboles dans Xcode


285

Je me demandais si quelqu'un pouvait me dire ce que Xcode fait réellement quand il dit: "Traitement des fichiers de symboles" après avoir branché votre appareil?

Capture d'écran


J'ai dû attendre assez longtemps ... environ 30 minutes et le déploiement ultérieur sur l'appareil a réussi. Peut-être que Mac prend du temps pour reconnaître l'appareil.
Jayprakash Dubey

Réponses:


263

Il télécharge les symboles (de débogage) à partir de l'appareil, il devient donc possible de déboguer sur les appareils avec cette version iOS spécifique et également de symboliser les rapports d'erreur qui se sont produits sur cette version iOS.

Étant donné que les symboles sont spécifiques au processeur, ce qui précède ne fonctionne que si vous avez importé les symboles non seulement pour un appareil iOS spécifique mais également pour un type de processeur spécifique. Les types de CPU actuellement nécessaires sont armv7 (par exemple iPhone 4, iPhone 4s), armv7s (par exemple iPhone 5) et arm64 (par exemple iPhone 5s).

Donc, si vous souhaitez symboliser un rapport d'erreur qui s'est produit sur un iPhone 5 avec armv7s et que vous ne disposez que des symboles armv7 pour cette version iOS spécifique, Xcode ne pourra pas (entièrement) symboliser le rapport d'erreur.


19
J'ai récemment découvert que Xcode ne traiterait pas les fichiers de symboles de mon iPad2 ou de mon iPhone4s. Il s'arrêtait toujours à mi-parcours et ne se terminait jamais, même après une demi-heure. En fin de compte, je l'ai fait fonctionner ... en cassant un tout nouveau câble de connexion et en le branchant directement sur mon Mac Mini (auparavant, j'avais été branché via une rallonge). J'ai conclu qu'une mauvaise connexion gâchait VRAIMENT les mises à jour des symboles.
Ash

5
Alors pourquoi ne pas regrouper ces symboles avec la distribution xcode? Pourquoi se donner la peine de les extraire de l'appareil?
Matthew Exon

3
Les symboles de toutes les architectures ont une taille supérieure à 1 Go par version (iOS), et il n'y a pas toujours de mise à jour Xcode pour chaque version de correction de bogue. Xcode n'est mis à jour qu'avec les mises à jour / modifications de l'API.
Kerni

@VladimirDespotovic Que voulez-vous résoudre ici? Ce n'est pas un problème. Cela doit être fait car le débogueur a besoin de ces données et pour la symbolisation des plantages, cela est également nécessaire. La question n'a pas non plus posé de problème.
Kerni

36

Dans Xcode version 6.1.1 (6A2008a), après "Traitement des fichiers de symboles", un dossier contenant les symboles associés à l'appareil (y compris la version iOS et le type de CPU) a été créé dans ~ / Library / Developer / Xcode / iOS DeviceSupport / comme ceci:

entrez la description de l'image ici


6
qu'y avait-il en (null) (null)?
Anton Tropashko

6
@AntonTropashko en (null) ((null))fait.
Alejandro Iván

6
Dans mon cas, "(null) ((null))" ne contenait ... rien!
Sjakelien

7
Étant donné que les fichiers Sym sont téléchargés en cas de besoin, j'ai supprimé la plupart des dossiers de cet emplacement. Il a libéré plus de 24 gig sur mon SSD!
Sjakelien

@Sjakelien Folder alors bien étiqueté
Brad Thomas

19

xCode copie simplement tous les journaux des plantages. Si vous souhaitez accélérer: supprimez le nombre de rapports de plantage après l'avoir analysé, directement dans cette fenêtre.

Devices -> View Device Logs -> All Logs

capture d'écran


@QLiu Bien sûr. Cela ressemble à un bug, ou les journaux sont plus gros que prévu.
WINSergey

Comment accéder à ces journaux? (J'ai 0 expérience avec xCode)
Ben

@Ben Window -> Appareils -> Sélectionnez votre appareil sur le côté gauche -> fait
WINSergey

4

Dans mon cas, la symbolique était éternelle. Je force à redémarrer mon téléphone avec le bouton marche / arrêt et le bouton d'accueil. Maintenant fini de symboliser rapidement et je commence à exécuter mon application via xcode.


1

Je sais que ce n'est pas une solution technique mais j'ai eu mon iphone connecté à l'ordinateur par câble et déconnecter l'appareil de l'ordinateur et le reconnecter (à nouveau par câble) a fonctionné pour moi car je n'ai pas pu le résoudre avec les solutions qui sont fourni avant.


Cela a peut-être été un bon moment ... ou une réaction retardée à d'autres actions que vous avez prises. Je me suis déconnecté et reconnecté et il est revenu dans ce mode jusqu'à ce qu'il soit terminé.
Paul Masri-Stone

0

Il compare les journaux de plantage récupérés de l'appareil à la version archivée (symbolisée pour être correcte) de vos applications pour essayer de récupérer où sur votre code le plantage s'est produit.

Regardez l' emplacement du fichier de symboles xcode pour plus de détails


0

Erreur ennuyeuse. Je l'ai résolu en branchant le câble directement sur l'iPad. Pour une raison quelconque, le processus ne se terminerait jamais si j'avais l'iPad dans le support d'intercommunication d'Apple.


3
C'est une erreur car elle ne se terminerait JAMAIS si je l'avais dans le stand.
GoldenJoe

2
Je reconnais que la réponse est mal exprimée, mais c'était en effet juste pour moi, la connexion directe au port USB a été résolue pour moi, malgré le fait que le concentrateur USB fonctionnait bien pour toute autre tâche
jalone

0

Ajouter la version SDK correspond à votre iPhone iOS, par exemple: iOS 10.3

chemin:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/DeviceSupport


Il se télécharge. Quand c'est fini, c'est OK. Comme le montre la figure:

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.