web-dev-qa-db-fra.com

Journaux de plantage générés par iPhone Simulator?

Y a-t-il des journaux de plantage générés par iPhone Simulator?

le simulateur plante beaucoup mais ne laisse aucune trace dans la console ... le journal des plantages sera utile.

88
Raptor

La console affichera la sortie NSLog() d'une application exécutée dans le simulateur. Les journaux de plantage sont enregistrés dans un fichier.

J'en ai trouvé dans mon répertoire personnel sous

~/Library/Logs/DiagnosticReports/

Ils ont une extension de fichier de .crash

Quelque chose que je n'ai pas encore compris est de savoir comment les faire générer même si le débogueur saisit le EXC_BAD_ACCESS signal.


Mise à jour

Actuellement, (OSX 10.11.6), le .crash se connecte ~/Library/Logs/DiagnosticReports, sont quand l'émulateur lui-même plante . Les journaux d'une application se bloquant (mais le périphérique émulateur fonctionne toujours correctement) sont dans:

~/Bibliothèque/Logs/CoreSimulator

Par crash, il y a un sous-dossier avec un identifiant unique. Trier par date, afin que votre récent crash soit le premier sous-dossier. À l'intérieur, commencez par regarder stderr.log et system.log.

Également directement sous CoreSimulator, voir CoreSimulator.log et Simulator.log.

145
ohhorob

Je suis sûr que vous pouvez le voir dans l'application OS X Console située dans Utilitaires. Si je me trompe, assurez-vous de me voter pour que je supprime cela.


MISE À JOUR:

Plus précisément (à partir d'OSX 10.11.6),

Lorsqu'une application se bloque sur l'émulateur, un sous-dossier (avec un identifiant unique) est ajouté à:

~/Bibliothèque/Logs/CoreSimulator

Dans ce cadre, commencez par examiner stderr.log et system.log.

Lorsque l'émulateur lui-même se bloque, un sous-dossier est ajouté à:

~/Bibliothèque/Logs/DiagnosticReports

Ne confondez pas ce chemin avec

/ Bibliothèque/Journaux

(manquant ~ au début), qui contient différents rapports sur votre Mac.

16
bpapa

Voici quelque chose qui a fonctionné pour moi dans un cas spécial ... Mon application se bloquait avec SIGKILL à la fin. Je verrais l'exception dans main.m pendant quelques secondes, puis l'application terminerait de se terminer - donc, aucune chance d'obtenir la trace arrière.

J'ai fait beaucoup de recherches sur "où le simulateur stocke-t-il ses journaux de plantage" et je n'ai jamais réussi à trouver une réponse. Cependant, l'astuce suivante m'a été très utile et j'ai pu récupérer le journal des accidents à la volée:

Fondamentalement, ouvrez /Applications/Utilities/CrashReporterPrefs.app et modifiez le paramètre sur "Developer". Cela entraînera CrashReporter pour afficher une fenêtre contextuelle avec le journal des plantages après le crash de votre application.

J'ai trouvé cela dans la section "Affichage de la console du simulateur iOS et des journaux de plantage" dans ce document d'Apple: http://developer.Apple.com/library/ios/#documentation/Xcode/Conceptual/ios_development_workflow/125- Using_iOS_Simulator/ios_simulator_application.html

5
dana_a

C'est beaucoup plus fiable. En seulement quelques étapes, j'ai pu trouver le numéro de ligne source et le nom de la méthode:

  1. cd dans le répertoire contenant les fichiers .app & .dSYM
  2. exécutez /Developer/Platforms/iPhoneOS.platform/Developer/usr/libexec/gdb/gdb-arm-Apple-darwin MyApp.app/MyApp
  3. activer l'impression asm-demangle
  4. définissez print symbol-filename sur
  5. p/a 0 × 00015c64 -> adresse obtenue en ouvrant le journal des plantages dans l'application "Console" ou en double-cliquant simplement sur le fichier .crash.
1
Gamma-Point

Les journaux de plantage de crash apparaîtront sous ~/Library/Logs/CrashReporter.

  • Si le programme du simulateur iPhone se bloque (pas l'application iPhone exécutée dans le simulateur), il y aura une entrée pour iPhoneSimulator.
  • Si l'application iPhone se bloque dans le simulateur, le journal des plantages apparaîtra avec le nom d'affichage de l'application.

Lorsque Xcode obtient des journaux de plantage d'un appareil connecté, il les stocke dans des sous-dossiers de ~/Library/Logs/CrashReporter/MobileDevice

1
Walt Sellers

Pour moi, c'était une expression que j'avais ajoutée à la fenêtre de surveillance du débogueur. Lorsqu'un point d'arrêt était atteint, la mauvaise expression provoquait la défaillance de XCode.

0
pTymN