web-dev-qa-db-fra.com

Symboles des rapports de crash d'applications iPhone

Je cherche à essayer de symboliser les rapports de plantage de mon application iPhone.

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

Tous ces fichiers sont regroupés dans un seul répertoire indexé par Spotlight.

Et maintenant?

J'ai essayé d'invoquer:

symbolicatecrash crashreport.crash myApp.app.dSYM

et il ne fait que produire le même texte que celui qui se trouve dans le rapport d'incident, mais il n'est pas symbolique.

Est-ce que je fais quelque chose de mal?

425
Jasarien

Étapes à suivre pour analyser le rapport d'incident d'Apple:

  1. Copiez le fichier de publication .app qui a été placé dans l’Appstore, le fichier .dSYM créé au moment de la publication et le rapport de blocage reçu d’Apple dans un DOSSIER.

  2. Ouvrez l'application Terminal et accédez au dossier créé ci-dessus (à l'aide de la commande cd)

  3. Exécutez atos -Arch armv7 -o APPNAME.app/APPNAME MEMORY_LOCATION_OF_CRASH. L'emplacement de la mémoire doit être celui sur lequel l'application s'est bloquée conformément au rapport.

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

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

Ex: [classname functionName:]; -510

Symbolicating IPA

si nous utilisons IPA pour symboliser - il suffit de renommer l'extension .ipa avec .Zip, l'extraire pour obtenir un dossier Payload contenant l'application. Dans ce cas, nous n’avons pas besoin du fichier .dSYM. 

Remarque

Cela ne peut fonctionner que si le binaire de l'application n'a pas de symboles supprimés. Par défaut, la version crée dépouillé les symboles. Nous pouvons le changer dans les paramètres de construction du projet "Dégrader les symboles de débogage lors de la copie" en NO.

Plus de détails voir ceci post

688
Naveen Shan

Après avoir lu toutes ces réponses ici afin de symboliser un journal de plantage (et finalement de réussir), je pense que certains points manquent ici qui sont vraiment importants pour déterminer pourquoi l'invocation de symbolicatecrash ne produit pas une sortie symbolisée.

Il y a 3 actifs qui doivent être combinés pour symboliser un journal des collisions:

  1. Le fichier journal des incidents lui-même (c'est-à-dire example.crash), soit exporté depuis l'organiseur de XCode, soit reçu depuis iTunes Connect.
  2. Le package .app (c'est-à-dire example.app) qui contient lui-même le fichier binaire de l'application appartenant au journal des incidents. Si vous avez un package .ipa (c'est-à-dire example.ipa), vous pouvez extraire le package .app en décompressant le package .ipa (c'est-à-dire unzip example.ipa). Ensuite, le package .app réside dans le dossier Payload/ extrait.
  3. Le package .dSYM contenant les symboles de débogage (c.-à-d. example.app.dSYM)

Avant de commencer la symbolique, vous devez vérifier si tous ces artefacts correspondent, ce qui signifie que le journal des incidents appartient au binaire que vous avez et que les symboles de débogage sont ceux produits lors de la construction de cet binaire.

Chaque fichier binaire est référencé par un UUID visible dans le fichier journal du crash:

...
Binary Images:
0xe1000 -    0x1f0fff +example armv7  <aa5e633efda8346cab92b01320043dc3> /var/mobile/Applications/9FB5D11F-42C0-42CA-A336-4B99FF97708F/example.app/example
0x2febf000 - 0x2fedffff  dyld armv7s  <4047d926f58e36b98da92ab7a93a8aaf> /usr/lib/dyld
...

Dans cet extrait, le journal des incidents appartient à une image binaire d'application nommée example.app/example avec UUID aa5e633efda8346cab92b01320043dc3.

Vous pouvez vérifier l’UUID du paquet binaire que vous avez avec dwarfdump:

dwarfdump --uuid example.app/example
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app/example

Ensuite, vous devriez vérifier si les symboles de débogage que vous avez également appartiennent à ce binaire:

dwarfdump --uuid example.app.dSYM
UUID: AA5E633E-FDA8-346C-AB92-B01320043DC3 (armv7) example.app.dSYM/Contents/Resources/DWARF/example

Dans cet exemple, tous les actifs sont compatibles et vous devriez pouvoir symboliser votre stacktrace.

Passage au script symbolicatecrash:

Dans Xcode 8.3, vous devriez pouvoir appeler le script via

/Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash -v example.crash 2> symbolicate.log

Si ce n'est pas le cas, vous pouvez exécuter un find . -name symbolicatecrash dans votre répertoire Xcode.app pour le trouver.

Comme vous pouvez le constater, aucun autre paramètre n’est donné. Le script doit donc trouver les symboles binaires et de débogage de votre application en effectuant une recherche Spotlight. Il recherche les symboles de débogage avec un index spécifique appelé com_Apple_xcode_dsym_uuids. Vous pouvez faire cette recherche vous-même:

mdfind 'com_Apple_xcode_dsym_uuids = *'

resp.

mdfind "com_Apple_xcode_dsym_uuids == AA5E633E-FDA8-346C-AB92-B01320043DC3"

Le premier appel Spotlight vous donne tous les packages dSYM indexés et le second vous donne les packages .dSYM avec un UUID spécifique. Si spotlight ne trouve pas votre package .dSYM, alors symbolicatecrash ne le fera pas non plus. Si vous faites tout ça, par exemple dans un sous-dossier de votre ~/Desktop, Spotlight devrait pouvoir tout trouver.

Si symbolicatecrash trouve votre paquet .dSYM, il devrait y avoir une ligne comme celle-ci dans symbolicate.log:

@dsym_paths = ( <SOME_PATH>/example.app.dSYM/Contents/Resources/DWARF/example )

Pour trouver votre package .app, une recherche Spotlight semblable à celle ci-dessous est appelée par symbolicatecrash:

mdfind "kMDItemContentType == com.Apple.application-bundle && (kMDItemAlternateNames == 'example.app' || kMDItemDisplayName == 'example' || kMDItemDisplayName == 'example.app')"

Si symbolicatecrash trouve votre paquet .app, l'extrait suivant devrait figurer dans symbolicate.log:

Number of symbols in <SOME_PATH>/example.app/example: 2209 + 19675 = 21884
Found executable <SOME_PATH>/example.app/example
-- MATCH

Si toutes ces ressources sont trouvées par symbolicatecrash, il convient d’imprimer la version symbolisée de votre journal des pannes. 

Sinon, vous pouvez directement transférer vos fichiers dSYM et .app.

symbolicatecrash -v --dsym <SOME_PATH>/<App_URI>.app.dSYM/<APP_NAME>.app.dsym <CRASHFILE> <SOME_OTHER_PATH>/<APP_NAME>.app/<APP_NAME> > symbolicate.log

Remarque: La trace symbolique est sortie vers le terminal et non pas symbolicate.log.

166
Andreas Klöber

Avec la dernière version de Xcode (3.2.2), vous pouvez faire glisser tout rapport d’incident dans la section Journaux de périphérique de Xcode Organizer. Ils seront automatiquement symbolisés à votre place. Je pense que cela fonctionne mieux si vous avez construit cette version de l'application à l'aide de Build & Archive (faisant également partie de Xcode 3.2.2).

115
Alan Rogers

Je l'ai fait avec succès, en utilisant les étapes suivantes.

Étape 1: Créez un dossier sur le bureau, je le nomme "CrashReport" et mets trois fichiers ("MYApp.app", "MyApp.app.dSYM", "MYApp_2013-07-18.crash") en elle.

Étape 2: Ouvrez le Finder et allez dans Applications, où vous trouverez l’application Xcode, faites un clic droit dessus et cliquez sur "Afficher le contenu du paquet". Après cela, suivez ce chemin simple . "Contenu-> Développeur-> Plateformes-> iPhoneOS.platform-> Développeur-> Bibliothèque-> PrivateFrameworks -> DTDeviceKit.framework -> Versions-> A-> Ressources"

OU 

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

OR

À partir de Xcode 6, le chemin est Applications/Xcode.app/Contenu/SharedFrameworks/DTDeviceKitBase.framework/Versions/A/Resources.

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

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

  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 Entrer maintenant c'est chose faite.
72
SachinVsSachin

Je mets également dsym, le paquet d'applications et le journal des pannes ensemble dans le même répertoire avant d'exécuter crash symbolique

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 peuvent vous aider.

Vous pouvez vérifier que spotlight "voit" vos fichiers dysm en exécutant la commande suivante:

mdfind 'com_Apple_xcode_dsym_uuids = *'

Cherchez le numéro que vous avez dans votre répertoire.

REMARQUE: Depuis la dernière Xcode, il n'y a plus de répertoire de développeur. Vous pouvez trouver cet utilitaire ici:

/Applications/Xcode.app/Contents/SharedFrameworks/DTDeviceKitBase.framework/Version/A/Ressources/symbolicatecrash

J'utilise Airbrake dans mes applications, ce qui fait un assez bon travail de consignation des erreurs à distance.

Voici comment je les symbolise avec atos si la trace en a besoin:

  1. Dans Xcode (4.2), accédez à l'organiseur, cliquez avec le bouton droit de la souris sur l'archive à partir de laquelle le fichier .ipa a été généré.

  2. Dans Terminal, cd dans xcarchive par exemple MyCoolApp 10-27-11 1.30 PM.xcarchive

  3. Entrez le atos -Arch armv7 -o 'MyCoolApp.app'/'MyCoolApp' suivant (n'oubliez pas les guillemets simples)

  4. Je n'inclus pas mon symbole dans cet appel. Ce que vous obtenez est un curseur de bloc sur une ligne vide.

  5. Ensuite, je copie/colle mon code de symbole sur le curseur de ce bloc et appuie sur Entrée. Vous verrez quelque chose comme:

    -[MyCoolVC dealloc] (in MyCoolApp) (MyCoolVC.m:34)

  6. Vous revenez à un curseur de bloc et vous pouvez coller d'autres symboles.

Le fait de pouvoir parcourir un élément de votre trace sans avoir à saisir de nouveau le premier bit vous permet de gagner du temps.

Prendre plaisir!

28
averydev

Étapes à suivre pour symboliser automatiquement un rapport d'incident à l'aide de XCode:

MISE À JOUR POUR XCODE 9

  1. Connectez le périphérique iOS n'importe lequel à votre Mac (oui, physique, oui, je sais que c'est stupide)

  2. Choisissez "Périphériques" dans le menu "Fenêtre"  enter image description here

  3. Cliquez sur votre appareil à gauche et sur VIEW DEVICE LOGS à droite  enter image description here

  4. Attendre. Cela peut prendre une minute pour se présenter. Peut-être que faire Command-A puis Delete accélèrera cela.

  5. Étape critique non documentée:} _ renommer le rapport d'incident que vous avez obtenu d'iTunesConnect à partir de l'extension .txt en extension .crash

  6. Faites glisser le rapport d'accident dans cette zone à gauche  enter image description here

Et puis Xcode symbolisera le rapport d'incident et affichera les résultats.

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

26
William Entriken

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

PAS

1.Xcode> Fenêtre> Périphériques.

2.Sélectionnez un appareil dans la liste des appareils de la section APPAREILS.

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

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

5.Xcode symbolise automatiquement le rapport d'incident pour vous.

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

20
Aditya Aggarwal

Même si je développais des applications depuis quelques années maintenant, c’était la première fois que je déboguais un fichier binaire et j’avais l’impression que NOOB découvrait où se trouvaient tous les fichiers, c’est-à-dire où se trouvaient * .app * .dSYM et les journaux des collisions? Je devais lire plusieurs posts pour le comprendre. L'image vaut mille mots et j'espère que ce billet aidera quelqu'un d'autre à l'avenir.

1- Allez d’abord sur itunesconnect et téléchargez vos journaux d’incidents. REMARQUE: Dans la plupart des cas, vous obtiendrez peut-être quelque chose comme "Trop peu de rapports ont été soumis pour qu'un rapport puisse être affiché." En gros, pas assez d'utilisateurs ont soumis des rapports de journal de plantage à Apple, auquel cas vous ne pouvez pas faire grand-chose à ce moment-là.

enter image description here

enter image description here

2- Maintenant, si vous n'avez pas changé votre code depuis que vous l'avez soumis à Apple, lancez Xcode pour ce projet et relancez Product -> Archive. Sinon, trouvez votre dernier fichier binaire soumis et cliquez dessus avec le bouton droit de la souris.

enter image description here

enter image description here

enter image description here

enter image description here

14
Sam B

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

  • organisateur ouvert,
  • cliquez sur Bibliothèque | Journal de l'appareil 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. Si vous avez archivé la construction en utilisant XCode -> Produit -> Archiver d'abord

8

Dans XCode 4.2.1, ouvrez Organizer, puis accédez à Library/Device Logs et faites glisser votre fichier .crash dans la liste des journaux de blocage. Il sera symbolisé pour vous après quelques secondes. Notez que vous devez utiliser la même instance de XCode sur laquelle la construction d'origine a été archivée (c'est-à-dire que l'archive de votre construction doit exister dans Organizer). 

8
cberkley

Magical XCode Organizer n’est pas aussi magique en ce qui concerne la symbolisation de mon application. Je n'ai aucun symbole pour les rapports d'incident que Apple m'a renvoyés après la soumission d'une application ayant échoué. 

J'ai essayé d'utiliser la ligne de commande, en plaçant le rapport d'incident dans le même dossier que le fichier .app (que j'ai envoyé 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 principal, mais c'était mieux que le dump numérique que l'Organizer me donnait et me suffisait pour trouver et réparer le crash de mon application. Si quelqu'un sait comment étendre cela pour obtenir les symboles de la Fondation, ce serait apprécié.

7
AndrewS

Dans mon cas, je glissais des rapports de plantage directement de Mail dans l’Organiseur. Pour une raison quelconque, cela a empêché les rapports d'accident de devenir symboliques (j'aimerais savoir pourquoi). 

En copiant d'abord les rapports d'incident sur le Bureau, puis en les faisant glisser vers l'Organiseur, ils sont symbolisés correctement.

Cas très spécifique, je sais. Mais pensais que je partagerais juste au cas où.

6
samvermette

La combinaison qui a fonctionné pour moi était:

  1. Copiez le fichier dSYM dans le répertoire où se trouvait le rapport d'incident.
  2. Décompressez le fichier ipa contenant l'application ('unzip MyApp.ipa')
  3. Copiez le fichier binaire de l'application extraite qui en résulte dans le même dossier que le rapport d'incident et le fichier de symboles (quelque chose comme "MyApp.app/MyApp").
  4. Importer ou re-symboliser le rapport d'incident à partir de l'organiseur de XCode

Utilisation de atos Je n'ai pas pu résoudre les informations de symbole correctes avec les adresses et les décalages figurant dans le rapport de blocage. Lorsque j'ai fait cela, je vois quelque chose de plus significatif, qui semble être une trace de pile légitime.

4
Sean Aitken

Pour ceux qui utilisent Airbrake, il y a une réponse solide ci-dessus mais cela ne fonctionnerait pas pour moi sans peaufiner: 

Fonctionne pour certaines adresses mémoire mais pas pour d'autres, vous ne savez pas pourquoi ...

  • Créer un nouveau répertoire sur le bureau ou ailleurs
  • Trouver l'archive en question dans l'organiseur Xcode
  • Taper deux fois pour révéler dans le Finder
  • Appuyez deux fois pour afficher le contenu du paquet
  • Copier le fichier .dSYM et le fichier .app dans un nouveau répertoire
  • cd dans un nouveau répertoire
  • Exécutez cette commande: atos -Arch armv7 -o 'Vimeo.app'/'Vimeo'
  • Terminal va entrer dans un mouvement interactif
  • Coller dans l'adresse mémoire et appuyer sur Entrée, le nom de la méthode et le numéro de ligne seront affichés
  • Vous pouvez également entrer cette commande: atos -Arch armv7 -o 'Vimeo.app'/'Vimeo' Pour obtenir des informations relatives à une seule adresse
4
Alfie Hanssen

Voici un autre problème que j'ai avec symbolicatecrash - cela ne fonctionnera pas avec les applications qui contiennent des espaces (par exemple, "Test App.app"). Notez que je ne pense pas que vous pouvez laisser des espaces dans leur nom lors de la soumission. Vous devez donc les supprimer quand même. Toutefois, si vous rencontrez déjà des accidents qui nécessitent une analyse, corrigez le symbole symbolececash (4.3 GM) en tant que 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\"";
4
Alastair Stuart

J'ai dû faire beaucoup de piratage du script symbolicatecrash pour le faire fonctionner correctement.

Pour autant que je sache, symbolicatecrash nécessite à présent que le .app se trouve dans le même répertoire que le .dsym. Il utilisera le .dsym pour localiser le .app, mais n'utilisera pas le dsym pour trouver les symboles.

Vous devriez faire une copie de votre symbolicatecrash avant d’essayer ces patchs qui le feront apparaître dans le DSym:

Autour de la ligne 212 dans la fonction getSymbolPathFor_dsymUuid

212     my @executablePath = grep { -e && ! -d } glob("$dsymdir" . "/Contents/Resources/DWARF/" . $executable);

Autour de la ligne 265 dans la fonction matchesUUID

265             return 1;
3
JerryH

C’est simple, après avoir recherché beaucoup, j’ai trouvé des étapes claires pour symboliser l’ensemble du fichier d’incident.

  • copier les fichiers .app, crash_report et DSYM dans un dossier.
  • connecter l'appareil avec xcode
  • Ensuite, allez à la fenêtre -> sélectionner les périphériques -> afficher les journaux des périphériques
  • Ensuite, sélectionnez ce périphérique, supprimez tous les journaux.
  • glissez et déposez votre plantage sur la section du journal du périphérique. cela symbolisera automatiquement le crash. faites un clic droit sur le rapport et exportez-le.

codage heureux,
Riyaz 

1
Shaik Riyaz

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

Les conditions

Créez un dossier et mettez-y 4 choses:

  1. symbolicatecrash Script Perl - de nombreuses réponses SO indiquent son emplacement

  2. L'archive de la construction qui correspond aux arrêts (de Xcode Organizer. Simple comme Show in Finder et copier) [Je ne suis pas sûr que ce soit nécessaire]

  3. Tous les packages xccrashpoint - (à partir de Xcode Organizer. Show in Finder, vous pouvez copier tous les packages du répertoire ou le seul xccrashpoint que vous souhaitez 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 scénario

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

  1. allCrashes - tous les accidents de tous les xccrashpoint seront présents.

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

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

1
Yitzchak

Afin de symboliser les blocages, Spotlight doit pouvoir rechercher le fichier .dSYM généré au même moment que le fichier binaire que vous avez envoyé à Apple. Comme il contient les informations sur le symbole, vous n'aurez aucune chance s'il n'est pas disponible.

0
rpetrich

atos est obsolète. Si vous utilisez OSX 10.9 ou une version ultérieure, vous devrez peut-être exécuter

xcrun atos

Avertissement:/usr/bin/atos se déplace et sera supprimé d'un futur système d'exploitation X release. Il est maintenant disponible dans les outils de développement Xcode sous la forme invoqué via: xcrun atos

0
elv1s

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

0
Mountain Man

Je suis un peu grincheux sur le fait que rien ici ne semble "fonctionner", alors j'ai fait quelques recherches et le résultat est:

Mettre en place: le back-end QuincyKit qui reçoit des rapports. Aucune symbolique n'a été mise en place, car je ne pouvais même pas commencer à comprendre ce qu'ils suggéraient de faire pour que cela fonctionne.

Le correctif: télécharger des rapports d'incident à partir du serveur en ligne. Ils s'appellent 'crash' et par défaut, ils vont dans le dossier ~/Téléchargements /. En gardant cela à l'esprit, ce script "fera le bon choix" et les rapports d'incidents seront intégrés à Xcode (organiseur, journaux des périphériques) et la symbolication sera effectuée.

Le scénario:

#!/bin/bash
# Copy crash reports so that they appear in device logs in Organizer in Xcode

if [ ! -e ~/Downloads/crash ]; then 
   echo "Download a crash report and save it as $HOME/Downloads/crash before running this script."
   exit 1
fi

cd ~/Library/Logs/CrashReporter/MobileDevice/
mkdir -p actx # add crash report to xcode abbreviated
cd actx

datestr=`date "+%Y-%m-%d-%H%M%S"`

mv ~/Downloads/crash "actx-app_"$datestr"_actx.crash"

Les choses peuvent être automatisées jusqu'à l'endroit où vous pouvez glisser-déposer dans Xcode Organizer en faisant deux choses si vous utilisez QuincyKit/PLCR. 

Tout d’abord, vous devez éditer le script distant admin/actionapi.php ~, ligne 202. Il ne semble pas que l’horodatage soit correct. point crash):

header('Content-Disposition: attachment; filename="crash'.$timestamp.'.crash"');

Deuxièmement, du côté iOS dans QuincyKit BWCrashReportTextFormatter.m ~ ligne 176, remplacez @"[TODO]" par @"TODO" pour éviter les mauvais caractères.

0
Kalle

J'ai découvert que la plupart des alternatives proposées ne fonctionnaient pas dans le dernier XCode (testé avec Xcode 10). Par exemple, je n’ai pas eu de chance en glissant-déposant les journaux .crash dans Xcode -> Organiseur -> Journaux de périphérique -view.

Je recommande d'utiliser l'outil Symbolicator https://github.com/agentsim/Symbolicator

  • Git clone le référentiel Symbolicator et compilez et exécutez avec Xcode
  • Copier le fichier .crash (fichier ascii, avec trace de pile au début du fichier) et .xarchive de la publication bloquante dans le même dossier temporaire
  • Faites glisser et déposez le fichier .crash sur l'icône Symbolicator dans le Dock
  • En 5-30 secondes, un fichier d’incidents symbolisé est créé dans le même dossier que les fichiers .crash et .xarchive.
0
noxo