web-dev-qa-db-fra.com

Comment symboliser manuellement un crash iOS pour afficher les journaux de crash

Essayer de déboguer l'application. Le problème est que je ne trouve pas ce programme.

symbolicatecrash.sh

Sudo cp /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneRemoteDevice.xcodeplugin/Contents/Resources/symbolicatecrash /usr/local/bin/

S'agit-il d'un téléchargement séparé? J'utilise XCode 3.2.3

Merci.

26
butchcowboy

EDIT :: XCode 4.3

Vous voudrez suivre les mêmes étapes que celles décrites dans la réponse d'origine (ci-dessous) à quelques exceptions près.

Tout d'abord, vous devez corriger le chemin Xcode. Ouvrez un terminal et exécutez:

/ usr/bin/xcode-select -print-path

Si elle affiche "/ Developer" ou autre chose que "/Applications/Xcode.app/Contents/Developer/", alors c'est faux. Pour résoudre ce problème, exécutez la commande:

Sudo/usr/bin/xcode-select -switch /Applications/Xcode.app/Contents/Developer/

Vous pouvez maintenant exécuter toutes les étapes ci-dessous, à l'exception que la commande symbolicatecrash se trouve (à nouveau) dans un nouvel emplacement. En effet, Xcode s'installe désormais en tant qu'application. Pour trouver symbolicatecrash exécutez ceci depuis le terminal:

trouver /Applications/Xcode.app -name symbolicatecrash -type f

Cela devrait retourner:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

Avant d'exécuter symbolicatecrash, vous pouvez aller dans ce répertoire comme:

cd /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/


Réponse originale :: Xcode <4.3

Chemin d'accès pour symbolicatecrash

Recherchez à partir d'un terminal en utilisant:

find/Developer -name symbolicatecrash -type f

Pour moi, cela est revenu:

/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

Comment symboliser manuellement un journal des pannes

Exécutez la commande symbolicatecrash avec le journal des plantages comme premier argument et votre fichier dSYM comme deuxième argument. Notez que si vous exécutez symbolicatecrash à partir du répertoire courant, vous DEVEZ mettre ./ devant comme ./symbolicatecrash sauf si votre variable d'environnement PATH inclut le répertoire dans lequel réside la commande.

J'ai changé pour le répertoire qui avait la commande symbolicatecrash en premier (note: sera différent pour Xcode 4.3, voir en haut):

cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/

J'ai ensuite exécuté la commande suivante:

./symbolicatecrash /somePath/MyCrashLogFile.crash /somePath/MyAppName.app.dSYM

Comment trouver le fichier dSYM:

Vous devez avoir l'archive qui a été utilisée pour créer la build avec le crash pour obtenir le fichier dSYM.

Voici les étapes:

  1. Clic droit (ou ctrl cliquez sur) l'archive de l'organiseur et choisissez "Afficher dans le Finder".
  2. Dans le fichier xcarchive du Finder, cliquez avec le bouton droit (ou ctrl cliquez sur) ce fichier et choisissez "Afficher le contenu du paquet". Vous verrez alors un dossier "dSYMs".
  3. Dans le dossier "dSYMs", vous trouverez le fichier "YourAppName.app.dSYM" dont vous aurez besoin pour symboliser les fichiers.
89
Sam

Un plugin est disponible pour Xcode dans le menu Produit. Ce plugin est disponible via gestionnaire de paquets Alcatraz ou peut être téléchargé directement depuis github .

Ce plugin incorpore en interne un script Shell qui effectue la configuration de l'exécution des commandes suivantes pour la symbolisation manuelle des plantages.

  1. Définissez un alias pour le script Perl symbolicatecrash.pl

alias symbolicatecrash = '/ Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash'

  1. Pour trouver symbolicatrash, doit-il différer de l'alias ci-dessus:

trouver /Applications/Xcode.app -name symbolicatecrash -type f

  1. Définissez la variable DEVELOPER_DIR:

export DEVELOPER_DIR = '/ Applications/Xcode.app/Contents/Developer'

  1. Avec le dSYM, le crash peut être symbolisé par:

symbolicatecrash /path/to/MyApp_2012-10-01_Device.crash /path/to/MyApp.app.dSYM.

5
MaheshShanbhag

Une façon de symboliser un journal des plantages est d'exécuter la commande suivante sur le terminal:

xcrun atos -o MyApp.app/MyApp -Arch armv7 -l 0xb7000 -f MyApp.crash

Remplacez l'exemple de nombre hexadécimal (0xb700) dans la commande ci-dessus par l'adresse de chargement de base. L'adresse de chargement de base est la première adresse mémoire de la ligne immédiatement après

"Images binaires:"

Pour obtenir le fichier .app:

Cliquez avec le bouton droit sur le fichier xcarchive et sélectionnez Afficher le contenu du package. Le fichier .app se trouve dans le répertoire Products/Applications.

4
Kumar Summan

Comme Apple explique, Xcode essaiera de symboliser automatiquement. Il utilise symbolicatecrash et spotlight pour le faire. Cependant, si l'application n'a pas été construite localement ou il a été supprimé, les fichiers .app et .dsym nécessaires ne sont pas disponibles.

Gardez donc le fichier dsym et l'application des versions publiées. Les outils de construction compresseront souvent le fichier .dsym dans un .dsym.Zip et conditionneront le .app en tant que .ipa. Vous pouvez décompresser les deux et copier .app et .dsym dans le même dossier. Ensuite, Xcode pourra les trouver en utilisant Spotlight.

2
orkoden

Je viens d'écrire un article sur le débogage du journal des plantages il y a 5 minutes ici: http://just2us.com/2010/10/reading-iphone-crashlog/

Vous n'aurez peut-être plus besoin de symbolicatecrash.sh si le glisser-déposer des journaux vers Xcode est suffisant pour votre objectif. J'utilise 3.2.4 et je ne trouve pas non plus le script.

2
samwize

Voici une méthode simple que j'utilise:

  1. Ouvrez Xcode 6
  2. Branchez votre appareil de développement
  3. Dans Xcode, accédez à Fenêtre> Appareils> Sélectionnez votre appareil
  4. Appuyez sur "Afficher les journaux des périphériques"
  5. Faites glisser votre rapport dans la fenêtre pour le voir
1
Charlie Seligman