web-dev-qa-db-fra.com

Atos ne peut pas obtenir les symboles du dSYM de l'application archivée

J'ai un rapport de plantage de BugSense , donc j'ai des informations sur l'emplacement de la mémoire des plantages mais ils ne sont pas symbolisés. De plus, Bug Sense n'envoie pas de rapports de plantage traditionnels mais me donne toujours une trace de bogue. J'essaie donc d'utiliser Atos pour obtenir l'emplacement exact de mes plantages. J'ai archivé l'application dans XCode 4 et utilisé cette version pour la soumettre à l'App Store, j'ai donc un fichier dSYM. J'ai exécuté le code suivant:

atos -Arch armv7 -o MyApp.app.dSYM 0x001057e9

Cependant, au lieu d'obtenir la sortie appropriée, je reçois une erreur:

atos cannot load symbols for the file MyApp.app.dSYM for architecture armv7

Avez-vous des suggestions pour expliquer pourquoi cela pourrait se produire? Je ne supprime pas les symboles de débogage de l'application.

34
Jason

Pour obtenir correctement les symboles du fichier dSYM de votre application archivée et obtenir des informations utiles à partir de vos rapports d'erreur BugSense (ou de tout autre rapport d'erreur d'ailleurs):

  1. Copiez la trace de pile de BugSense dans TextEdit ou tout autre éditeur de texte. Assurez-vous d'utiliser l'icône "presse-papiers", plutôt que de simplement copier le texte. Sinon, vous n'obtiendrez pas les emplacements de mémoire réels de la trace de pile, qui sont nécessaires pour rechercher les références à l'aide de atos et symboliser votre trace de pile.
  2. Ouvrez XCode et accédez à l'Organisateur
  3. Trouvez votre archive et faites un clic droit dessus, allez l'ouvrir dans le Finder.
  4. Accédez au répertoire de l'archive, généralement ~/Library/Developer/XCode/Archives/YYYY-MM-DD/
  5. Allez dans l'archive spécifique, puis dans le dossier dSYMs
  6. Vous verrez le fichier MyApp.app.dSYM et vous pourriez penser que c'est le fichier contre lequel je devrais exécuter atos! Ceci est une erreur. Il s'agit en fait d'un autre package!cd dans ce package, dans le dossier: MyApp.app.dSYM/Contents/Resources/DWARF et vous trouverez un autre fichier simplement appelé MyApp. Il s'agit du fichier dSYM réel.
  7. Courir atos -Arch armv7 -o MyApp 0x0000000 (ou quelle que soit l'adresse mémoire) pour trouver l'emplacement de votre erreur, ou simplement atos -Arch armv7 -o MyApp pour passer en mode interactif.
98
Jason

Vous devez obtenir la bonne adresse. Vous pouvez utiliser la solution ci-dessus, mais vous devez utiliser les mathématiques hexadécimales pour obtenir la bonne adresse mémoire. slide + stack address - adresse de chargement.

3
Greg Hawk