L'organisateur Xcode 5 avait une vue qui listait tous les journaux de crash. et nous pourrions faire glisser les journaux de crash ici. Mais depuis Xcode 6, je sais qu'ils ont déplacé les appareils de l'organisation et ont une nouvelle fenêtre pour le même. Mais je ne trouve pas d'endroit où je vois les journaux de crash que j'ai glissé-déposés dans Xcode 5 après être passé à Xcode 6. Quelqu'un connaît la réponse?
190
Réponses:
Ok, j'ai réalisé que vous pouvez faire ceci:
Xcode > Window > Devices
, sélectionnez un iPhone / iPad / etc connecté en haut à gauche.Vous avez probablement beaucoup de journaux là-bas, et pour faciliter la recherche de votre journal importé plus tard, vous pouvez simplement continuer et supprimer tous les journaux à ce stade ... à moins qu'ils ne vous rapportent de l'argent. Ou à moins que vous ne connaissiez le moment exact où le crash s'est produit - il devrait être écrit dans le fichier de toute façon ... Je suis paresseux donc je supprime simplement tous les anciens journaux (cela a en fait pris un certain temps).
la source
.crash
.Ecrire cette réponse autant pour la communauté que pour moi.
S'il y a des problèmes symbolisant un rapport de plantage, on peut les surmonter comme suit:
Créez un dossier séparé, copiez
Foo.app
etFoo.app.dSYM
du correspondant.xcarchive
dans le dossier. Copiez également le.crash
rapport dans le dossier.Ouvrez le rapport de plantage dans TextEdit ou ailleurs, allez dans la
Binary Images:
section, et copiez-y la première adresse (par exemple0xd7000
).cd
dans le dossier. Vous pouvez maintenant exécuter la commande suivante:xcrun atos -o Foo.app/Foo -arch arm64 -l 0xd7000 0x0033f9bb
Cela symbolisera le symbole à l'adresse
0x0033f9bb
. Veuillez vous assurer de choisir la valeur correcte pour l'-arch
option (peut être obtenue à partir de la première ligne de laBinary Images:
section, ou comprise dans leHardware Model:
dans le rapport de plantage et les arches prises en charge par l'application).Vous pouvez également copier les adresses nécessaires (par exemple une pile d'appels de thread) du rapport de plantage directement dans un fichier texte (dans TextEdit, maintenez Option et sélectionnez le bloc de texte nécessaire, ou copiez et coupez), pour obtenir quelque chose comme ceci:
Vous pouvez maintenant l'enregistrer dans un fichier texte, par exemple
addr.txt
, et exécuter la commande suivante:Cela donnera une belle symbolique pour toutes les adresses à la fois.
PS
Avant de faire ce qui précède, il vaut la peine de vérifier que tout est correctement configuré (comme
atos
le signalera volontiers quelque chose pour pratiquement toute adresse fournie).Pour effectuer la vérification, ouvrez le rapport d’incident et accédez à la fin de la pile d’appels pour
Thread 0
. La première ligne à partir de la fin pour lister votre application (généralement la deuxième), par exemple:devrait être l'
main()
appel. La symbolisation de l'adresse (0x0033f9bb
dans ce cas) comme décrit ci-dessus devrait confirmer qu'il s'agit bienmain()
et non d'une méthode ou d'une fonction aléatoire.Si l'adresse n'est pas celle de
main()
, vérifiez votre adresse de chargement (-l
option) et votre arc (-arch
option).PPS
Si ce qui précède ne fonctionne pas à cause du bitcode , téléchargez le dSYM pour votre build à partir d'iTunes Connect, extrayez le binaire exécutable du dSYM (Finder> Show Package Contents), copiez-le dans le répertoire et utilisez-le (c'est-à-dire
Foo
) comme le argument àatos
, au lieu duFoo.app/Foo
.la source
xcrun dwarfdump --uuid <path to executable>
./symbolicate.sh mycrash.crash MyApp.app arch64 output.crash
seulement, il symbolisera le rapport de panne complet et vous en donnera la version symbolisée. gist.github.com/nathan-fiscaletti/…Vous pouvez également vous référer à celui-ci, j'ai écrit la procédure étape par étape de la re-symbolisation manuelle du crash.
Re-symbolisation du crash
ÉTAPE 1
Déplacez tous les fichiers ci-dessus (MyApp.app, MyApp-dSYM.dSYM et MyApp-Crash-log.crash) dans un dossier avec un nom pratique partout où vous pouvez aller en utilisant facilement Terminal.
Pour moi, Desktop est l'endroit le plus facilement accessible;) J'ai donc déplacé ces trois fichiers dans un dossier MyApp sur Desktop.
ÉTAPE 2
Maintenant c'est au tour du Finder, accédez au chemin suivant celui qui s'applique à votre version XCODE.
Utilisez cette commande pour trouver le
symbolicatecrash
fichier de script,find /Applications/Xcode.app -name symbolicatecrash
Xcode 8, Xcode 9, Xcode 11
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
Xcode 7.3
/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash
XCode 7
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources/symbolicatecrash
Xcode 6
/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Plus bas que Xcode 6
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKitBase.framework/Versions/A/Resources
Ou
Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources
ÉTAPE 3
Ajoutez le répertoire du fichier script symbolicatecrash trouvé à la
$PATH
variable env comme ceci:sudo vim /etc/paths.d/Xcode-symbolicatecrash
et collez le répertoire du fichier script et enregistrez le fichier. Lors de l'ouverture d'un nouveau terminal, vous pouvez appelersymbolicatecrash
n'importe quel dossier en tant que commandes situées dans/usr/bin
.Ou
Copiez le fichier symbolicatecrash à partir de cet emplacement et collez-le sur le bureau / MyApp (Attendez… Ne me suivez pas aveuglément, je colle le fichier sybolicatecrash dans le dossier MyApp, celui que vous avez créé à la première étape à votre emplacement préféré, contenant trois fichiers. )
ÉTAPE 4
Ouvrez Terminal et CD dans le dossier MyApp.
- Appuyez sur Entrée
- Appuyez sur Entrée
C'est tout !! Les logs symbolisés sont sur votre terminal… maintenant qu'attendez-vous? Maintenant, trouvez simplement l'erreur et résolvez-la;)
Bon codage !!!
la source
xcode-select --print-path
Pour moi, le fichier .crash était suffisant. Sans fichier .dSYM et fichier .app.
J'ai exécuté ces deux commandes sur le mac où je construis l'archive et cela a fonctionné:
la source
Il existe un moyen plus simple d'utiliser Xcode (sans utiliser les outils de ligne de commande et rechercher les adresses une à la fois)
Prenez n'importe quel fichier .xcarchive. Si vous en avez un avant, vous pouvez l'utiliser. Si vous n'en avez pas, créez-en un en exécutant le Produit> Archiver à partir de Xcode.
Cliquez avec le bouton droit sur le fichier .xcarchive et sélectionnez `` Afficher le contenu du paquet ''
Copiez le fichier dsym (de la version de l'application qui a planté) dans le dossier dSYMs
Copiez le fichier .app (de la version de l'application qui a planté) dans le dossier Produits> Applications
Modifiez le fichier Info.plist et modifiez CFBundleShortVersionString et CFBundleVersion dans le dictionnaire ApplicationProperties. Cela vous aidera à identifier l'archive plus tard
Double-cliquez sur l'archive .x pour l'importer dans Xcode. Il devrait ouvrir l'Organisateur.
Revenez au journal des pannes (dans la fenêtre Appareils dans Xcode)
Faites-y glisser votre fichier .crash (s'il n'est pas déjà présent)
L'ensemble du journal des pannes doit maintenant être symbolisé. Sinon, cliquez avec le bouton droit de la souris et sélectionnez 'Re-symbolicate crash log'
la source
Suivez ces étapes dans Xcode 10 pour symboliser un journal des pannes à partir d'une application construite sur la même machine:
la source
Si vous avez le .dSYM et le fichier .crash dans le même sous-dossier, voici les étapes que vous pouvez suivre:
$ atos -arch arm64 -o TheElements.app.dSYM/Contents/Resources/DWARF/TheElements -l 0x1000e4000 0x00000001000effdc -[AtomicElementViewController myTransitionDidStop:finished:context:]
Source faisant autorité: https://developer.apple.com/library/content/technotes/tn2151/_index.html#//apple_ref/doc/uid/DTS40008184-CH1-SYMBOLICATE_WITH_ATOS
la source
Xcode 11.2.1, décembre 2019
**
**
Nous pourrons voir les journaux de crash symbolisés là-bas
Veuillez consulter le lien pour plus de détails sur la symbolisation des journaux de crash
la source
Assurez-vous que le nom de votre application Xcode ne contient aucun espace. C'était la raison pour laquelle cela n'a pas fonctionné pour moi. Donc ça
/Applications/Xcode.app
marche, alors que/Applications/Xcode 6.1.1.app
ça ne marche pas.la source
À partir de la documentation d'Apple:
Symbolique des rapports de plantage avec Xcode Xcode tentera automatiquement de symboliser tous les rapports de plantage qu'il rencontre. Tout ce que vous avez à faire pour la symbolisation est d'ajouter le rapport de plantage à Xcode Organizer.
Xcode symbolisera automatiquement le rapport de panne et affichera les résultats Pour symboliser un rapport de panne, Xcode doit être en mesure de localiser les éléments suivants:
Le fichier binaire et dSYM de l'application en panne.
Les fichiers binaires et dSYM pour tous les frameworks personnalisés auxquels l'application est liée. Pour les frameworks qui ont été construits à partir des sources avec l'application, leurs fichiers dSYM sont copiés dans l'archive avec le fichier dSYM de l'application. Pour les frameworks créés par un tiers, vous devrez demander à l'auteur le fichier dSYM.
Symboles du système d'exploitation sur lequel cette application était en cours d'exécution lorsqu'elle s'est plantée. Ces symboles contiennent des informations de débogage pour les frameworks inclus dans une version spécifique du système d'exploitation (par exemple, iOS 9.3.3). Les symboles du système d'exploitation sont spécifiques à l'architecture - une version d'iOS pour les appareils 64 bits n'inclura pas de symboles armv7. Xcode copiera automatiquement les symboles du système d'exploitation de chaque appareil que vous connectez à votre Mac.
Si l'un de ces éléments est manquant, Xcode peut ne pas être en mesure de symboliser le rapport d'incident, ou peut ne symboliser que partiellement le rapport d'incident.
la source
Le processus le plus simple pour symboliser les journaux de panne:
Attendez 5 secondes. Coup! les appels d'application dans la trace de pile seront symbolisés! Vous verrez peut-être encore beaucoup de symboles! ce sont des appels internes à la bibliothèque et au framework.
C'est le plus simple, essayé et testé!
la source
**
**
Nous pourrons voir les journaux de crash symbolisés là-bas
Veuillez consulter le lien pour plus de détails sur la symbolisation des journaux de crash
la source