75 votes

Noms de symbole manquants lors du profilage d'une application iPhone avec Instruments

Je suis en train de compiler une application IPhone via une ligne de commande (aucune option XCode n'est donc impliquée) et je ne parviens pas à afficher les noms de mes symboles lors du profilage avec Instruments. J'ai essayé plusieurs drapeaux tels que -gdawrf-2 et -g sans succès. J'ai également essayé d'utiliser dsymutils pour générer un fichier .dSYM, mais je n'ai aucune idée de la façon dont je suis censé l'utiliser, de sorte que cela a également échoué.

Toute aide sera fortement appréciée!

70voto

youdonotexist Points 541

J'étais encore avoir des problèmes avec cela.

Mon problème est que j'ai pu voir la dSYM fichier généré, mais les Instruments n'était pas le ramasser.

Pour résoudre ce problème, procédez de la manière suivante:

  1. Recherchez votre dSYM fichier (doit être dans ~/Bibliothèque/Développeur/DerivedData/APP_NAME-XXXXXXX/Construction/Produits/[BUILD_TYPE]-[TYPE PÉRIPHÉRIQUE]/
  2. Avec des Instruments arrêté, cliquez sur Fichier -> Re-Symbolicate Document
  3. Faites défiler jusqu'à l'entrée avec le nom de votre appli
  4. Cliquez sur "Rechercher" et choisissez le dossier de l'étape 1
  5. Cliquez sur le bouton Démarrer pour commencer le profilage

43voto

Mac Twist Points 286

Comment les Instruments obtient les informations de débogage:

Instruments obtient les informations de débogage à partir d'un .dSYM fichier qui est normalement généré automatiquement par XCode lors de la configuration des Informations de Débogage Format NAIN dSYM Fichier combiné avec une coche dans la Générer les Symboles de Débogage case d'option. La configuration de ces options permettra d'ajouter une étape supplémentaire à l'XCode processus de construction et de générer un dSYM fichier après l'application a été compilée. Chaque dSYM est construit avec un UUID qui correspond à un UUID dans un Mach-O dans le binaire qu'il est dérivé. Les Projecteurs de l'importateur indices de l'Uuid de chaque dSym fichier qui est dans un coup de Projecteur sur l'accessibilité de l'emplacement sur votre Mac. Par conséquent, SPOTLIGHT ne tous la magie noire et est responsable de faire le lien entre l' .l'application que vous exécutez et de ses correspondants .dSYM fichier.

Comment générer des informations de débogage et dSYM fichier sans XCode:

Assurez-vous que vous êtes compilig avec –gdwarf-2 et g drapeaux. (Autre drapeau combinaisons pourrait fonctionner)

-g Produire des informations de débogage dans le système d'exploitation natif du format (stabs, COFF , XCOFF , ou le NAIN 2). GDB peut travailler avec cette débogage de l'information. Sur la plupart des systèmes qui utilisent lames de format, -g permet une utilisation d'appoint des informations de débogage seulement GDB pouvez utiliser; cette information supplémentaire permet débogage de mieux travailler dans GDB mais probablement faire d'autres débogueurs de crash ou de refuser de lire le programme. Si vous souhaitez contrôler pour certains si générer de l'information supplémentaire, utilisez -gstabs+, -gstabs, -gxcoff+, -gxcoff, ou -les ptc (voir ci-dessous). GCC permet vous utiliser -g avec -O. Les raccourcis prises par un code optimisé peut à l'occasion de produire surprenant résultats: certaines variables déclarées peut ne pas exister du tout; flux de contrôle peut brièvement se déplacer où vous n'avez pas attendez; certains états peuvent ne pas être exécuté, car ils calculent des résultats constants ou de leurs valeurs ont été déjà à portée de main; certains états peuvent exécuter en différents endroits, car ils ont été déplacés hors de la boucle.
Néanmoins, il s'avère possible d' débogage de sortie optimisé. De ce fait, il raisonnable d'utiliser l'optimiseur pour les programmes qui peuvent avoir des bugs.

-gdwarf-2 Produire des informations de débogage dans le NAIN version 2 format (si pris en charge). C'est le format utilisé par DBX sur IRIX 6. Avec cette option, GCC utilise des fonctionnalités de NAIN version 3 quand ils sont utiles; la version 3 est à la hausse compatible avec la version 2, mais elle peut provoquer des problèmes pour les anciens débogueurs.

Générer un dSYM fichier à l'aide de dsymutil. Si l'outil n'est pas reconnu dans la ligne de commande, utilisez spotlight pour trouver. IMPORTANT: Placer .application fichier sur votre mac HD avant de générer le dSYM si vous travaillez sur un lecteur réseau.

dsymutil MyApp.app/MyApp-o MyApp.app.dSYM

Lieu les .dSYM fichier sur le mac disque local et d'exécuter des Instruments comme vous le feriez normalement.

Resettig spotlight indexation:

Si les symboles ne sont pas indiquées, il est peut-être parce spotligh est buggé. Vous pouvez essayer de mettre à zéro les projecteurs de l'indexation par l'ajout de votre dossier contenant le dSYM de fichier (ou même votre voiture) de la "Empêcher le projecteur de la recherche sur ces emplacements" dans les préférences de spotlight, puis de l'enlever tout de suite.

15voto

Matt Connolly Points 4851

Dans Xcode 4.5 vous pouvez choisir de Profil à partir de Debug ou Release. Version par défaut pour le décapage des symboles lors de la copie de l'appareil. Il est très facile de passer à la configuration de Débogage pour le profilage sans casser votre configuration de version. Pour ce faire, sélectionnez le Produit -> Modifier le Régime de l'XCode menu. Sélectionnez "Profil" dans la liste de programmes qui s'ouvre, puis sélectionnez la bonne Configuration de Build pour que.

Ou vous pourriez faire un communiqué de presse distinct/profil de configuration et utilisez-la dans votre Profil la section de votre régime. Comment ajouter une construction séparé de configuration est décrite dans le XCode Guide de l'Utilisateur.

2voto

Bram Points 617

Le problème est que le projecteur ne peut pas trouver le .dSYM fichiers. C'est parce que Apple a changé l'emplacement de la DerivedData dossier. Le DerivedData maintenant va dans ~/Bibliothèque

Spotlight indexe pas ~/Bibliothèque et que j'ai été en mesure d'établir, ne peut pas être l'indice qu'il soit (par exemple, mdimport est ignoré).

Un travail autour pour obtenir des symboles dans le profiler, est de simplement copier les données à l'extérieur de ~/Library par exemple, votre répertoire de base fera l'affaire.

J'ai utilisé cette ligne de commande:

$ cp -r ~/Library/Developer/Xcode/DerivedData/AppName-xxxxxxxxxxx/Build/Products/Release-iphoneos/ ~/

Lorsque vous tuez votre profiler, et de commencer un nouveau profil d'exécution, vous verrez que les symboles sont de nouveau disponibles.

1voto

Paul R Points 104036

Consultez le journal de construction et assurez-vous que votre commutateur -g parvient au compilateur - il est facile de se tromper en changeant les paramètres au niveau du projet et / ou de la cible pour différentes configurations de construction, etc.

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