J'essaie de déboguer une application qui s'est plantée (ou suspendue). Comment puis-je obtenir les fichiers de diagnostic du crash ?
Y a-t-il un moyen d'obtenir cela par ligne de commande ?
J'essaie de déboguer une application qui s'est plantée (ou suspendue). Comment puis-je obtenir les fichiers de diagnostic du crash ?
Les rapports de collision individuels sont stockés dans /Library/Logs/CrashReporter mais il existe un outil de collecte des journaux à l'échelle du système appelé sysdiagnose .
Une fois que vous commencez à rencontrer le problème, maintenez enfoncées les 4 touches de modification et appuyez sur le point ".". shift + control + option + command + .
Vous devriez voir l'écran clignoter en blanc. Après environ 15 secondes, une fenêtre du Finder s'ouvrira avec un fichier sysdiagnose en surbrillance.
Ce raccourci clavier exécute simplement la commande sysdiagnose
Ainsi, si vous êtes familier avec le Terminal et que vous souhaitez transmettre 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 arguments et ne capture que le rapport de base.
~/Library/Logs/CrashReporter
ne contient pas .crash
des fichiers. Au lieu de cela : /Library/Logs/DiagnosticReports
y ~/Library/Logs/DiagnosticReports
L'accord clé pour sysdiagnose ne fonctionnera que si le démon stackshot fonctionne. Dans ma réponse le launchctl
démarrera le démon.
Ce shell script(sur 10.8 et inférieur) et programme exécutable du même nom sur 10.9 :
Dans le Terminal, exécutez la commande suivante.
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.stackshot.plist
Notez par écrit l'accord de clé suivant, vous en aurez besoin plus tard :
Control - Option - Command - Shift - .
Lorsqu'un problème survient :
sysdiagnose
routine à compléter - il suffit d'attendre aussi longtemps que possible (il n'y aura pas d'indication de la progression à l'écran)Dans de rares cas, un problème peut empêcher sysdiagnose de se terminer (j'ai fait des suggestions d'amélioration à Apple). Si cela se produit, et si vous êtes sûr d'avoir attendu suffisamment longtemps, il peut être judicieux de redémarrer le Mac. Ensuite :
/private/var/tmp
Sans l'accord de la clé, vous pouvez exécuter sysdiagnose à partir de la ligne de commande (voir ci-dessous, page du manuel Apple). Mais il est souvent plus utile, ou nécessaire, d'utiliser l'accord de clé - soyez donc préparé.
Bien que je n'encourage pas l'imprudence, vous pouvez être un peu imprudent avec Control - Option - Command - Shift - . si vous luttez pour éviter les fn sur votre ordinateur portable, ne vous inquiétez pas ; l'inclure par accident ne devrait pas empêcher le fonctionnement de sysdiagnose
.
Conseil : quelqu'un pourrait souhaiter poser une question distincte sur l'analyse des résultats de l'enquête. sysdiagnose
- une réponse plus généralisée pourrait être utile.
/tmp
la zone est un fichierPrésence d'un sysdiagnose_….tar.gz
indique que toutes les parties du fichier sysdiagnose
et que les résultats ont été archivés. Si vous le souhaitez, ouvrez l'archive - son contenu apparaîtra sous forme de dossier.
/tmp
la zone est un dossierPrésence d'un sysdiagnose_…
(pas un dossier .tar.gz
) indique que soit :
Certains fichiers sont lisibles par l'homme et peuvent aider à résoudre un problème.
D'autres fichiers sont plus orientés vers les développeurs.
En rapport :
Pour un incomplet course de sysdiagnose
il peut être utile d'accorder une certaine attention aux fichiers qui sont anormalement vide
stackshot(1) OS X Page de manuel
sysdiagnose(1) Page de manuel OS X
Une partie de ce qui est ci-dessus est une édition plus générique de une réponse acceptée qui apparaît ailleurs.
Laissez-vous guider par la liste des journaux dans Console :
Attendez-vous à trouver des fichiers dans les chemins suivants :
Graham : c'est un jour + : quelque chose à apprendre ! Je pense que ce genre d'outil profiterait à toutes les entrées des sysadmins s'il était open source.
Console
Pour trouver les fichiers de diagnostic ou de collision existants, ouvrez Console et trouver les fichiers dans Rapports des utilisateurs (situé à ~/Library/Logs/DiagnosticReports
) dans ou Rapports sur le système (situé à /Library/Logs/DiagnosticReports
) sections. Voir : Où puis-je trouver mes journaux d'accidents ?
sysdiagnose
Conformément à officiel sysdiagnose
instructions pour MacOS, vous pouvez déclencher une sysdiagnose
soit par :
Note : Pour accéder au lien ci-dessus, vous devez vous connecter à Développeur Site Apple d'abord.
Appuyez brièvement et simultanément sur les touches suivantes :
Command - Option - Shift - Control - Period (.)
et attendez. Le site sysdiagnose
Le processus peut prendre 10 minutes. Une fois terminé, Finder devrait automatiquement apparaître en montrant le fichier généré dans /private/var/tmp/
(par exemple sysdiagnose_2017.mm.dd_hh-mm-ss-0000_12345.tar.gz
).
Déclencher un sysdiagnose
à partir du Terminal en entrant cette commande :
sudo sysdiagnose
Pour générer des vidages de noyau de collision, voir : Comment générer des vidages de noyau sous MacOS ?
LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.