Comment obtenez-vous des fichiers de diagnostic système de macOS?

20

J'essaie de déboguer une application bloquée (ou suspendue). Comment puis-je obtenir les fichiers de diagnostic du crash?

Stephen
la source

Réponses:

18

Les rapports d'incident individuels sont stockés dans ~ / Bibliothèque / Logs / CrashReporter, mais il existe un outil de collecte de journaux à l'échelle du système appelé sysdiagnose .

Une fois que vous commencez à rencontrer le problème, maintenez les 4 touches de contrôle enfoncées, puis appuyez sur la période "." clé. shift+ control+ option+ command+.

Après environ 15 secondes, une fenêtre du Finder s'ouvrira avec un fichier sysdiagnose mis en surbrillance.

Une fois que vous avez commencé à rencontrer le problème, maintenez les touches "shift" + "control" + "option" + "commande" enfoncées, puis appuyez sur la période "."  clé.

Ce raccourci exécute simplement la sysdiagnosecommande. Ainsi, si vous connaissez le terminal et souhaitez passer un ID de processus, vous pouvez obtenir des informations de débogage améliorées sur ce programme spécifique. Le raccourci clavier appelle l'outil sans argument et capture uniquement le rapport de base.

Stephen
la source
y a-t-il un moyen de l'obtenir par ligne de commande?
Sidasa
1
~/Library/Logs/CrashReporterne contient pas de .crashfichiers. Au lieu de cela: /Library/Logs/DiagnosticReportset~/Library/Logs/DiagnosticReports
Graham Perrin
L'accord de clé pour sysdiagnose ne fonctionnera que si le démon stackshot est exécuté. Dans ma réponse , la launchctlcommande va démarrer le démon.
Graham Perrin
la sysdiagnosecommande est-elle également disponible dans OS 10.6? Je ne trouve pas de page de manuel et which sysdiagnosene renvoie rien dans OS 10.6.8, ou dois-je l'installer explicitement?
MostlyHarmless
1
@Martin ma réponse est modifiée pour répondre à votre question.
Graham Perrin
16

Apple sysdiagnose

Ce script shell (à partir de 10.8) et le programme exécutable du même nom à 10.9:

  • recueille des informations de diagnostic à l'échelle du système
  • fait partie intégrante d'OS X Lion et supérieur
  • n'est pas disponible en téléchargement séparé
  • n’est pas open source (j’ai demandé à Apple de le faire).

Se préparer à l’approche sysdiagnose uniquement au clavier

Dans Terminal, exécutez la commande suivante.

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.stackshot.plist
  • si un mot de passe vous est demandé, entrez votre mot de passe administrateur pour le système d'exploitation.
  • c'est une action unique, pas besoin de répéter la commande.

Prenez note de l’accord de clé suivant, vous en aurez besoin plus tard:

Control- Option- Command- Shift-.

Diagnostic par le système

Lorsqu'un problème survient:

  1. utiliser l'accord clé
  2. pendant au moins dix secondes, ne touchez rien
  3. prévoyez cinq ou dix minutes pour que toutes les parties de la sysdiagnoseroutine soient terminées - attendez simplement le plus longtemps possible (il n'y aura aucune indication de progrès à l'écran)
  4. Le Finder devrait ouvrir une fenêtre sur le résultat final.

À titre exceptionnel

Dans de rares cas, un problème peut empêcher sysdiagnose de se terminer (j'ai présenté des suggestions d'amélioration à Apple). Si cela se produit - si vous êtes certain d'avoir attendu assez longtemps - il peut être judicieux de redémarrer le Mac. Ensuite:

  1. dans le Finder, allez à /private/var/tmp
  2. rechercher un fichier ou un dossier dont le nom commence par sysdiagnose_
  3. si ce fichier ou ce dossier existe, déplacez-le dans un endroit approprié - votre bureau par exemple.

Astuces

Sans l'accord de clé, vous pouvez exécuter sysdiagnose à partir de la ligne de commande (voir ci-dessous, page de manuel Apple). Mais il est souvent plus utile, ou nécessaire, d'utiliser l'accord - alors soyez prêt.

Bien que je n’encourage pas l’insouciance, vous pouvez l'être un peu avec Control- Option- Command- Shift- .… si vous avez du mal à éviter la fnclé sur votre ordinateur portable, ne vous inquiétez pas; l'inclure par accident ne devrait pas empêcher la course de sysdiagnose.


Analyse humaine du diagnostic par le système

Astuce: quelqu'un voudra peut-être poser une question distincte sur l'analyse des résultats sysdiagnose- une réponse plus générale pourrait être utile.

Si sysdiagnose_… de la /tmpzone est un fichier

La présence d'un sysdiagnose_….tar.gzfichier indique que toutes les parties de la sysdiagnoseroutine sont terminées et que les résultats ont été archivés. Si vous le souhaitez, ouvrez l’archive - son contenu apparaîtra sous forme de dossier.

Si sysdiagnose_… de la /tmpzone est un dossier

La présence d'un sysdiagnose_…dossier (pas un .tar.gzfichier) indique que:

  • la routine a été interrompue avant la fin; ou
  • une partie de la routine ne pouvait pas terminer.

Dans l'archive / le dossier

Certains fichiers sont lisibles par l’homme et peuvent aider à résoudre un problème.

Les autres fichiers sont plus orientés développeur.

En relation:

Pour une exécution incomplète , sysdiagnoseil peut être utile de concentrer votre attention sur les fichiers anormalement vides…


Notes techniques et autres

stackshot (1) OS X Page de manuel

sysdiagnose (1) OS X Manual Page

Une partie de ce qui précède est une édition plus générique d’ une réponse acceptée qui apparaît ailleurs.


Informations de diagnostic et d'utilisation, autres fichiers d'intérêt

Soyez guidé par la liste de journaux dans la console:

Une capture d'écran de la barre latérale de la console

Attendez-vous à trouver des fichiers dans les chemins suivants:

  • ~ / Library / Logs / DiagnosticReports
  • / Bibliothèque / Journaux / DiagnosticReports
  • ~ / Bibliothèque / Journaux
  • / Bibliothèque / Journaux
  • / private / var / log
Graham Perrin
la source
1
→ Graham: c'est un jour +: quelque chose à apprendre! Je pense que ce type d’outil serait bénéfique à tous les administrateurs systèmes s’il était open source.
Dan
0

Console

Pour rechercher des fichiers de diagnostic ou de blocage existants, ouvrez l' application Console et recherchez les fichiers dans les rapports de l'utilisateur (situés dans ~/Library/Logs/DiagnosticReports) ou dans les sections des rapports système (situés dans /Library/Logs/DiagnosticReports). Voir: Où puis-je trouver mes journaux d'incidents?

sysdiagnose

Selon les sysdiagnoseinstructions officielles pour macOS, vous pouvez déclencher une des sysdiagnoseactions suivantes:

Remarque: pour accéder au lien ci-dessus, vous devez d'abord vous connecter au site Developer Apple .

  • Appuyez brièvement sur les touches suivantes simultanément:

    Command- Option- Shift- Control-Period (.)

    et attendre. Le sysdiagnoseprocessus peut prendre 10 minutes. Une fois terminé, le Finder devrait automatiquement apparaître montrant le fichier généré dans /private/var/tmp/(par exemple sysdiagnose_2017.mm.dd_hh-mm-ss-0000_12345.tar.gz).

  • Déclenchez un sysdiagnosedepuis le terminal en entrant cette commande:

    sudo sysdiagnose
    

dépotoirs

Pour générer des vidages mémoire sur crash, voir: Comment générer des vidages mémoire sur macOS?

Kenorb
la source