ios - probleme - Symboles de l'application iPhone en cas de panne




probleme mise a jour application iphone (16)

Étapes pour symboliser un rapport d'erreur automatiquement en utilisant XCode:

MISE À JOUR POUR XCODE 9

  1. Connectez n'importe quel appareil iOS à votre Mac (oui un physique, oui je sais que c'est stupide)

  2. Choisissez "Appareils" dans le menu "Fenêtre"

  3. Cliquez sur votre appareil sur la gauche et afficher les journaux de périphériques sur la droite

  4. Attendez. Cela peut prendre une minute pour apparaître. Peut Command-A être que faire Command-A puis Delete va accélérer cela.

  5. Étape critique non documentée: renommez le rapport d'erreur que vous avez reçu de iTunesConnect de l'extension .txt extension .crash

  6. Faites glisser le rapport d'accident dans cette zone sur la gauche

Ensuite, Xcode symbolisera le rapport d'erreur et affichera les résultats.

Source: https://developer.apple.com/library/ios/technotes/tn2151/_index.html

Je cherche à symboliser les rapports d'erreur de mon application iPhone.

J'ai récupéré les rapports d'erreur d'iTunes Connect. J'ai l'application binaire que j'ai soumis à l'App Store et j'ai le fichier dSYM qui a été généré dans le cadre de la construction.

J'ai tous ces fichiers ensemble dans un seul répertoire qui est indexé par spotlight.

Et maintenant?

J'ai essayé d'invoquer:

symbolicatecrash crashreport.crash myApp.app.dSYM

et il sort juste le même texte qui est dans le rapport d'accident pour commencer, non symbolisé.

Est-ce que je fais quelque chose de mal?


Étapes à suivre pour analyser le rapport d'erreur d'apple:

  1. Copiez le fichier .app de version qui a été copié sur l'appstore, le fichier .dSYM créé au moment de la publication et le rapport de plantage reçu d'APPLE dans un DOSSIER .

  2. Ouvrez l'application de terminal et allez dans le dossier créé ci-dessus (en utilisant la commande cd )

  3. Exécutez atos -arch armv7 -o APPNAME.app/APPNAME MEMORY_LOCATION_OF_CRASH . L'emplacement de la mémoire devrait être celui où l'application s'est plantée selon le rapport.

Ex: atos -arch armv7 -o 'APPNAME.app'/'APPNAME' 0x0003b508

Cela vous montrerait la ligne exacte, le nom de la méthode qui a abouti à un crash.

Ex: [classname functionName:]; -510 [classname functionName:]; -510

IPA symbolisant

si nous utilisons IPA pour symboliser - il suffit de renommer l'extension .ipa avec .zip, extrayez-le, nous pouvons obtenir un dossier de charge utile qui contient l'application. Dans ce cas, nous n'avons pas besoin de fichier .dSYM.

Remarque

Cela ne peut fonctionner que si le binaire de l'application n'a pas de symboles supprimés. Par défaut, les versions de versions ont supprimé les symboles. Nous pouvons le modifier dans les paramètres de construction du projet "Strip Déboguer les symboles pendant la copie" sur NO.

Plus de détails voir cet post


Avec la dernière version de Xcode (3.2.2), vous pouvez glisser et déposer tous les rapports d'erreur dans la section Device Logs de l'organiseur Xcode et ils seront automatiquement symbolisés pour vous. Je pense que cela fonctionne mieux si vous avez construit cette version de l'application en utilisant Build & Archive (également partie de Xcode 3.2.2)


C'est simple, après avoir beaucoup cherché, j'ai trouvé des étapes claires pour symboliser l'ensemble du fichier journal de l'accident.

  • copier les fichiers .app, crash_report et DSYM dans un dossier.
  • connectez l'appareil avec xcode
  • Ensuite, allez dans la fenêtre -> sélectionnez les périphériques -> afficher les journaux de l'appareil
  • Sélectionnez ensuite cet appareil, supprimez tous les journaux.
  • glisser et déposer votre accident sur la section du journal de l'appareil. cela symbolisera automatiquement le crash. faites un clic droit sur le rapport et exportez-le.

codage heureux,
Riyaz


Dans mon cas, je faisais glisser des rapports d'erreur directement depuis Mail vers l'organisateur. Pour une raison quelconque, cela a empêché les rapports d'accident de devenir symboliques (j'aimerais savoir pourquoi).

Copier d'abord les rapports de plantage sur le bureau, puis les faire glisser vers l'organiseur, les a symbolisés correctement.

Cas très particulier, je sais. Mais je pensais partager juste au cas où.


En utilisant XCode 4, la tâche est encore plus simple:

  • ouvrir Organizer,
  • cliquez sur la bibliothèque | Device Log dans la colonne de gauche
  • Cliquez sur le bouton "Importer" en bas de l'écran ...

et voilà. Le fichier journal est importé et symbolisé automatiquement pour vous. À condition que vous ayez archivé la construction en utilisant XCode -> Product -> Archive first


J'ai réussi, maintenant je veux partager avec vous tous les gars.

Ce sont les étapes suivantes:

Étape 1: Créer un dossier dans le bureau, je le nomme "CrashReport" et mettre trois fichiers ("MYApp.app", "MyApp.app.dSYM", "MYApp_2013-07-18.crash") dedans.

Étape 2: Ouvrez Finder et allez à Applications, où vous trouverez l'application Xcode, faites un clic droit dessus et cliquez sur "Show Package Contents", après cela, suivez ce chemin simple

"Contenu-> Développeur-> Plate-formes-> iPhoneOS.platform-> Développeur-> Bibliothèque-> PrivateFrameworks-> DTDeviceKit.framework -> Versions-> A-> Ressources"

OU

"Contenu-> Développeur-> Plate-formes-> iPhoneOS.platform-> Développeur-> Bibliothèque-> PrivateFrameworks-> DTDeviceKitBase.framework -> Versions-> A-> Ressources"

OU

Pour Xcode 6 et au-dessus, le chemin est Applications / Xcode.app / Contents / SharedFrameworks / DTDeviceKitBase.framework / Versions / A / Ressources

Lorsque vous trouvez le fichier "symbolicatecrash", copiez-le et collez-le dans le dossier "CrashReport".

Étape 3: lancez le terminal, exécutez ces 3 Command

  1. cd / Users / mac38 / Desktop / CrashReport et appuyez sur le bouton Entrée

  2. export DEVELOPER_DIR = "/ Applications / Xcode.app / Contents / Developer" et appuyez sur Entrée

  3. ./symbolicatecrash -A -v MYApp_2013-07-18.crash MyApp.app.dSYM et appuyez sur Entrée maintenant son fait .. (NOTE: versions autour de 6.4 ou plus tard n'ont pas l'option -A - il suffit de le laisser)

Codage heureux .. Merci


J'aime utiliser Textwrangler pour identifier les erreurs dans un rejet binaire de téléchargement d'application originale. (Les données de l'accident seront trouvées dans votre compte itunesConnect.) En utilisant la méthode de Sachin ci-dessus, je copie l'original.crash à TextWrangler, puis copiez le fichier symbolicatecrash que j'ai créé dans un autre fichier TextWrangler. La comparaison des deux fichiers met en évidence les différences. Le fichier symbolicatecrash aura des différences qui indiquent le fichier et le numéro de ligne des problèmes.


Je mets également dsym, bundle d'application, et le journal de panne ensemble dans le même répertoire avant d'exécuter le crash de symbolicate

Ensuite, j'utilise cette fonction définie dans mon .profile pour simplifier l'exécution de symbolicatecrash:

function desym
{
    /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash -A -v $1 | more
}

Les arguments ajoutés ici peuvent vous aider.

Vous pouvez vérifier que Spotlight "voit" vos fichiers dysm en lançant la commande:

mdfind 'com_apple_xcode_dsym_uuids = *'

Cherchez le dsym que vous avez dans votre répertoire.

NOTE: Depuis le dernier Xcode, il n'y a plus de répertoire de développeurs. Vous pouvez trouver cet utilitaire ici:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Vers ions / A / Resources / symbolicatecrash


Je préfère un script qui symbolisera tous mes journaux de plantage.

Conditions préalables

Créer un dossier et y mettre 4 choses:

  1. symbolicatecrash Perl Script - il y a beaucoup de réponses SO qui indique son emplacement

  2. Les archives de la construction qui correspondent aux plantages (de Xcode Organizer, simple comme Show in Finder et copier) [Je ne suis pas sûr que ce soit nécessaire]

  3. Tous les paquets xccrashpoint - (à partir de Xcode Organizer. Show in Finder , vous pouvez copier tous les paquets dans le répertoire, ou le seul xccrashpoint que vous aimeriez symboliser)

  4. Ajoutez ce court script au répertoire:

    #!/bin/sh
    
    echo "cleaning old crashes from directory"
    rm -P *.crash
    rm -P *.xccrashpoint
    rm -r allCrashes
    echo "removed!"
    echo ""
    echo "--- START ---"
    echo ""
    
    mkdir allCrashes
    mkdir symboledCrashes
    find `ls -d *.xccrashpoint` -name "*.crash" -print -exec cp {} allCrashes/ \;
    
    cd allCrashes
    for crash in *.crash; do
        ../symbolicatecrash $crash > ../symboledCrashes/V$crash
    done
    cd ..
    
    echo ""
    echo "--- DONE ---"
    echo ""
    

Le script

Lorsque vous exécutez le script, vous obtenez 2 répertoires.

  1. allCrashes - tous les plantages de tous les xccrashpoint seront là.

  2. symboledCrashes - les mêmes accidents mais maintenant avec tous les symboles.

  3. vous n'avez pas besoin de nettoyer le répertoire des anciens plantages avant d'exécuter le script. il va nettoyer automatiquement. bonne chance!


Juste une réponse simple et à jour pour xcode 6.1.1.

PAS

1.Xcode> Fenêtre> Appareils.

2.Sélectionnez un périphérique dans la liste des périphériques sous la section APPAREILS.

3.Sélectionnez Afficher les journaux de périphérique.

4.Sous la section Tous les journaux, vous pouvez faire glisser directement le rapport.

5.Xcode Symbolise automatiquement le rapport d'erreur pour vous.

6.Vous pouvez trouver le rapport d'incident symbolisé en faisant correspondre sa date / heure avec la date / heure mentionnée dans votre rapport d'erreur.


L'organisateur magique de XCode n'est pas magique pour symboliser mon application. Je n'ai reçu aucun symbole pour les rapports d'accident que j'ai reçus d'Apple suite à une demande d'inscription ratée.

J'ai essayé d'utiliser la ligne de commande, en plaçant le rapport d'erreur dans le même dossier que le fichier .app (que j'ai soumis au magasin) et le fichier .dSYM:

$ symbolicatecrash "My App_date_blahblah-iPhone.crash" "My App.app"

Cela ne fournissait que des symboles pour mon application et non le code de base de la fondation, mais c'était mieux que le vidage de nombre que l'organisateur me donnait et était suffisant pour que je trouve et répare le crash de mon application. Si quelqu'un sait comment étendre cela pour obtenir des symboles de la Fondation, ce serait apprécié.


Même si je développais des applications depuis quelques années, c'était la première fois que je débuggeais un binaire et je me sentais comme un NOOB complet pour savoir où se trouvaient tous les fichiers, c'est-à-dire * .app * .dSYM et les journaux de plantage? J'ai dû lire plusieurs messages pour le comprendre. La photo vaut mille mots et j'espère que ce message aidera quelqu'un d'autre à l'avenir.

1- Premièrement, allez sur itunesconnect et téléchargez vos journaux de plantage. NOTE: Dans la plupart des cas, vous pouvez obtenir quelque chose comme "Trop peu de rapports ont été soumis pour qu'un rapport soit affiché". Fondamentalement pas assez d'utilisateurs ont soumis des rapports de journal de plantage à Apple, auquel cas vous ne pouvez pas faire grand-chose à ce stade.

2- Si vous n'avez pas modifié votre code depuis que vous l'avez envoyé à Apple, lancez Xcode pour ce projet et recommencez Product -> Archive. Sinon, trouvez simplement votre dernier fichier binaire soumis et faites un clic droit dessus.


Nous utilisons Google Crashlytics pour superviser les journaux de bord, le sentiment est très opportun et pratique à utiliser.

Liens vers les documents: https://docs.fabric.io/apple/crashlytics/missing-dsyms.html#missing-dsyms

Tout à propos de Missing dSYMs Fabric inclut un outil pour télécharger automatiquement le dSYM de votre projet. L'outil est exécuté via le script / run, qui est ajouté à votre Run Script Build Phase pendant le processus d'intégration. Cependant, il peut y avoir certaines situations où les téléchargements dSYM échouent en raison de configurations de projet uniques ou si vous utilisez Bitcode dans votre application. Lorsqu'un téléchargement échoue, Crashlytics ne peut pas symboliser et afficher des plantages, et une alerte "Missing dSYM" apparaîtra sur votre tableau de bord Fabric.

Les dSYM manquants peuvent être téléchargés manuellement en suivant les étapes décrites ci-dessous.

Remarque: Comme alternative à l'outil de téléchargement automatique dSYM, Fabric fournit un outil de ligne de commande (symboles de téléchargement) qui peut être configuré manuellement pour être exécuté dans le cadre du processus de construction de votre projet. Voir la section des symboles de téléchargement ci-dessous pour les instructions de configuration.

...


Pour symboliser les plantages, Spotlight doit être capable de trouver le fichier .dSYM qui a été généré en même temps que le binaire que vous avez envoyé à Apple. Comme il contient les informations sur les symboles, vous n'aurez pas de chance s'il n'est pas disponible.


Voici un autre problème que j'ai avec symbolicatecrash - il ne fonctionnera pas avec les applications qui ont des espaces dans leur bundle (ie 'Test App.app'). Note Je ne pense pas que vous puissiez avoir des espaces dans leur nom lors de la soumission, donc vous devriez les enlever de toute façon, mais si vous avez déjà des plantages qui ont besoin d'être analysés, corrigez symbolicatecrash (4.3 GM) comme tel:

240c240
<         my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == $exec_name.app\"";
---
>         my $cmd = "mdfind \"kMDItemContentType == com.apple.application-bundle && kMDItemFSName == '$exec_name.app'\"";
251c251
<             my $cmd = "find \"$archive_path/Products\" -name $exec_name.app";
---
>             my $cmd = "find \"$archive_path/Products\" -name \"$exec_name.app\"";