Wie erhält man Systemdiagnosedateien von macOS?


20

Ich versuche, eine abgestürzte (oder hängende) App zu debuggen. Wie bekomme ich die Diagnosedateien vom Absturz?

Antworten:


19

Einzelne Absturzberichte werden in ~ / Library / Logs / CrashReporter gespeichert, es gibt jedoch ein systemweites Tool zur Protokollsammlung namens sysdiagnose .

Wenn das Problem auftritt, halten Sie die 4 Steuertasten gedrückt und drücken Sie die Taste "." Schlüssel. shift+ control+ option+ command+.

Nach ungefähr 15 Sekunden wird ein Finder-Fenster mit einer hervorgehobenen Sysdiagnose-Datei geöffnet.

Wenn das Problem auftritt, halten Sie die Tastenkombination "Umschalt" + "Steuerung" + "Option" + "Befehl" gedrückt und drücken Sie dann die Taste "."  Schlüssel.

Diese Verknüpfung führt einfach den sysdiagnoseBefehl aus. Wenn Sie mit dem Terminal vertraut sind und eine Prozess-ID übergeben möchten, erhalten Sie erweiterte Debugging-Informationen zu diesem bestimmten Programm. Die Tastenkombination ruft das Tool ohne Argumente auf und erfasst nur den Basisbericht.


gibt es eine möglichkeit, dies per befehlszeile zu bekommen?
Sidasa

1
~/Library/Logs/CrashReporterenthält keine .crashDateien. Stattdessen: /Library/Logs/DiagnosticReportsund~/Library/Logs/DiagnosticReports
Graham Perrin

Der Schlüsselakkord für sysdiagnose funktioniert nur, wenn der Stackshot-Daemon ausgeführt wird. In meiner Antwortlaunchctl startet der Befehl den Daemon.
Graham Perrin

ist der sysdiagnoseBefehl auch in OS 10.6 verfügbar? Ich finde keine Manpage und which sysdiagnoseerhalte in OS 10.6.8 nichts zurück oder muss ich sie explizit installieren?
MostlyHarmless

1
@Martin meine Antwort wird bearbeitet, um Ihre Frage zu beantworten.
Graham Perrin

16

Apple sysdiagnose

Dieses Shell-Skript (unter 10.8 und niedriger) und das ausführbare Programm mit demselben Namen unter 10.9:

  • sammelt systemweite Diagnoseinformationen
  • ist ein wesentlicher Bestandteil von OS X Lion und höher
  • ist nicht als separater Download verfügbar
  • ist nicht Open Source (ich habe Apple gebeten, es so zu machen).

Vorbereitung auf den Nur-Tastatur-Ansatz für sysdiagnose

Führen Sie im Terminal den folgenden Befehl aus.

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.stackshot.plist
  • Wenn Sie zur Eingabe eines Kennworts aufgefordert werden, geben Sie Ihr Administratorkennwort für das Betriebssystem ein
  • Das ist einmalig, Sie müssen den Befehl nicht wiederholen.

Notieren Sie sich den folgenden Akkord, den Sie später benötigen:

Control- Option- Command- Shift-.

Diagnose durch das System

Wenn ein Problem auftritt:

  1. Verwenden Sie den Tastenakkord
  2. Berühren Sie mindestens zehn Sekunden lang nichts
  3. sysdiagnoseWarten Sie etwa fünf oder zehn Minuten, bis alle Teile der Routine abgeschlossen sind. Warten Sie einfach so lange wie möglich (auf dem Bildschirm wird kein Fortschritt angezeigt).
  4. Der Finder sollte ein Fenster zum Endergebnis öffnen.

Außergewöhnlich

In seltenen Fällen kann ein Problem den Abschluss der Systemdiagnose verhindern (ich habe Apple Verbesserungsvorschläge unterbreitet). In diesem Fall - wenn Sie sicher sind, dass Sie lange genug gewartet haben - kann es sinnvoll sein, den Mac neu zu starten. Dann:

  1. Gehen Sie im Finder zu /private/var/tmp
  2. suche eine Datei oder einen Ordner mit einem Namen, der mit sysdiagnose_ beginnt
  3. Wenn diese Datei oder dieser Ordner vorhanden ist, verschieben Sie sie an einen geeigneten Ort, z. B. Ihren Desktop.

Hinweise

Ohne den Schlüsselakkord können Sie sysdiagnose über die Befehlszeile ausführen (siehe Apple-Handbuch). Aber es ist oft nützlicher oder notwendiger, den Akkord zu benutzen - seien Sie also vorbereitet.

Obwohl ich nicht zu Unachtsamkeit aufrufe, können Sie ein wenig unachtsam sein mit Control- Option- Command- Shift- .… wenn Sie Schwierigkeiten haben, den fnSchlüssel auf Ihrem Laptop zu umgehen , machen Sie sich keine Sorgen; das versehentliche einbinden sollte den lauf von nicht verhindern sysdiagnose.


Humananalyse der Diagnose durch das System

Hinweis: Möglicherweise möchte jemand eine separate Frage zur Analyse der Ergebnisse von stellen. sysdiagnoseEine allgemeinere Antwort kann hilfreich sein.

Wenn sysdiagnose_… aus dem /tmpBereich eine Datei ist

Das Vorhandensein einer sysdiagnose_….tar.gzDatei zeigt an, dass alle Teile der sysdiagnoseRoutine abgeschlossen und die Ergebnisse archiviert wurden. Wenn Sie möchten, öffnen Sie das Archiv. Der Inhalt wird als Ordner angezeigt.

Wenn sysdiagnose_… aus dem /tmpBereich ein Ordner ist

Das Vorhandensein eines sysdiagnose_…Ordners (keine .tar.gzDatei) weist auf Folgendes hin:

  • die Routine wurde vor Beendigung unterbrochen; oder
  • Ein Teil der Routine konnte nicht abgeschlossen werden.

Im Archiv / Ordner

Einige Dateien können von Menschen gelesen werden und helfen möglicherweise bei der Behebung eines Problems.

Andere Dateien sind eher auf Entwickler ausgerichtet.

Verbunden:

Bei einem unvollständigen Durchlauf sysdiagnosekann es hilfreich sein, sich auf ungewöhnlich leere Dateien zu konzentrieren.


Technische und sonstige Hinweise

stackshot (1) OS X Handbuch

sysdiagnose (1) OS X Handbuch

Einige der obigen Angaben sind eine allgemeinere Ausgabe einer akzeptierten Antwort , die an anderer Stelle angezeigt wird.


Diagnose- und Nutzungsinformationen, andere Dateien von Interesse

Lassen Sie sich von der Protokollliste in Console leiten:

Ein Screenshot der Seitenleiste von Console

Erwarten Sie, dass Sie Dateien unter den folgenden Pfaden finden:

  • ~ / Library / Logs / DiagnosticReports
  • / Library / Logs / DiagnosticReports
  • ~ / Library / Logs
  • / Bibliothek / Protokolle
  • / private / var / log

2
→ Graham: Dies ist ein + Tag: etwas zu lernen! Ich denke, diese Art von Tool würde allen Sysadmins-Eingaben zugute kommen, wenn es Open Source wäre.
Dan

0

Console

Um vorhandene Diagnose- oder Absturzdateien zu suchen, öffnen Sie die Konsolen- App und suchen Sie die Dateien in den Abschnitten Benutzerberichte (befindet sich unter ~/Library/Logs/DiagnosticReports) oder Systemberichte (befindet sich unter /Library/Logs/DiagnosticReports). Siehe: Wo finde ich meine Absturzprotokolle?

sysdiagnose

Gemäß den offiziellen sysdiagnoseAnweisungen für macOS können Sie eine der folgenden sysdiagnoseAktionen auslösen :

Hinweis: Um auf den obigen Link zugreifen zu können, müssen Sie sich zuerst bei der Developer Apple-Site anmelden .

  • Drücken Sie kurz die folgenden Tasten gleichzeitig:

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

    und warte. Der sysdiagnoseVorgang kann 10 Minuten dauern. Nach Abschluss des Vorgangs sollte Finder automatisch mit der generierten Datei in /private/var/tmp/(z sysdiagnose_2017.mm.dd_hh-mm-ss-0000_12345.tar.gz. B. ) angezeigt werden .

  • Triggern Sie a sysdiagnosevon Terminal, indem Sie den folgenden Befehl eingeben:

    sudo sysdiagnose
    

Core Dumps

Informationen zum Generieren von Absturz-Core-Dumps finden Sie unter: So generieren Sie Core-Dumps unter macOS?

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.