Jak uzyskać pliki diagnostyczne systemu z systemu macOS?

20

Próbuję debugować zawieszoną aplikację. Jak uzyskać pliki diagnostyczne po awarii?

Stephen
źródło

Odpowiedzi:

19

Poszczególne raporty o awariach są przechowywane w ~ / Library / Logs / CrashReporter, ale istnieje systemowe narzędzie do zbierania dzienników o nazwie sysdiagnose .

Po wystąpieniu problemu przytrzymaj 4 klawisze sterowania, a następnie naciśnij kropkę „”. klucz. shift+ control+ option+ command+.

Po około 15 sekundach otworzy się okno Findera z podświetlonym plikiem sysdiagnose.

Gdy zaczniesz napotykać problem, przytrzymaj klawisze „shift” + „control” + „opcja” + „polecenie”, a następnie naciśnij kropkę „.”  klucz.

Ten skrót po prostu wykonuje sysdiagnosepolecenie, więc jeśli znasz terminal i chcesz przekazać identyfikator procesu, możesz uzyskać ulepszone informacje debugowania dotyczące tego konkretnego programu. Skrót klawiszowy wywołuje narzędzie bez argumentów i przechwytuje tylko podstawowy raport.

Stephen
źródło
czy istnieje sposób, aby uzyskać to za pomocą wiersza polecenia?
Sidasa,
1
~/Library/Logs/CrashReporternie zawiera .crashplików. Zamiast tego: /Library/Logs/DiagnosticReportsi~/Library/Logs/DiagnosticReports
Graham Perrin
Akord klawiszowy dla sysdiagnose będzie działał tylko wtedy, gdy uruchomi się demon stackshot. W mojej odpowiedzi The launchctlkomenda uruchomi demona.
Graham Perrin
czy sysdiagnosepolecenie jest dostępne również w systemie OS 10.6? Nie mogę znaleźć strony which sysdiagnosepodręcznika i nic nie zwraca w systemie operacyjnym 10.6.8, czy też muszę ją jawnie zainstalować?
MostlyHarmless 17.04.13
1
@ Martin moja odpowiedź jest edytowana, aby odpowiedzieć na twoje pytanie.
Graham Perrin
16

Sysdiagnose firmy Apple

Ten skrypt powłoki (w wersji 10.8 i niższej) i program wykonywalny o tej samej nazwie w wersji 10.9:

  • zbiera informacje diagnostyczne z całego systemu
  • jest integralną częścią OS X Lion i nowszych
  • nie jest dostępny jako osobny plik do pobrania
  • nie jest oprogramowaniem typu open source (poprosiłem o to Apple).

Przygotowanie do podejścia sysdiagnose opartego tylko na klawiaturze

W terminalu uruchom następujące polecenie.

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.stackshot.plist
  • jeśli pojawi się monit o hasło, wprowadź hasło administratora systemu operacyjnego
  • to jednorazowe, nie trzeba powtarzać polecenia.

Zanotuj na piśmie następujący akord klawiszowy, będziesz go potrzebować później:

Control- Option- Command- Shift-.

Diagnoza przez system

Gdy wystąpi problem:

  1. użyj klawisza akordu
  2. przez co najmniej dziesięć sekund niczego nie dotykaj
  3. może potrwać pięć lub dziesięć minut na zakończenie wszystkich części sysdiagnoserutyny - po prostu poczekaj tak długo, jak to możliwe (na ekranie nie będzie żadnych informacji o postępie)
  4. Finder powinien otworzyć okno do wyniku końcowego.

Wyjątkowo

W rzadkich przypadkach problem może uniemożliwić wykonanie sysdiagnose (zaproponowałem Apple ulepszenia). Jeśli tak się stanie - jeśli masz pewność, że czekałeś wystarczająco długo - rozsądne może być ponowne uruchomienie komputera Mac. Następnie:

  1. w Finderze przejdź do /private/var/tmp
  2. wyszukaj plik lub folder o nazwie zaczynającej się sysdiagnose_
  3. jeśli ten plik lub folder istnieje, przenieś go w wygodne miejsce - być może na pulpit.

Poradnik

Bez klawisza akordowego możesz uruchomić sysdiagnose z wiersza poleceń (patrz poniżej, strona instrukcji Apple). Ale często użycie akordu jest bardziej przydatne lub konieczne - więc bądź przygotowany.

Chociaż nie zachęcam do niedbalstwa, możesz być trochę nieostrożny z Control- Option- Command- Shift- .... jeśli masz problem z uniknięciem fnklucza na swoim laptopie, nie martw się; włączenie go przez przypadek nie powinno uniemożliwiać uruchomienia sysdiagnose.


Analiza diagnozy przez system

Wskazówka: ktoś może zadać osobne pytanie dotyczące analizy wyników sysdiagnose- bardziej ogólna odpowiedź może być przydatna.

Jeśli sysdiagnose_… z tego /tmpobszaru jest plikiem

Obecność sysdiagnose_….tar.gzpliku wskazuje, że wszystkie części sysdiagnoseprocedury zostały zakończone, a wyniki zostały zarchiwizowane. Jeśli chcesz, otwórz archiwum - jego zawartość pojawi się jako folder.

Jeśli sysdiagnose_… z tego /tmpobszaru jest folderem

Obecność sysdiagnose_…folderu (nie .tar.gzpliku) wskazuje, że:

  • rutyna została przerwana przed zakończeniem; lub
  • część rutyny nie mogła się zakończyć.

W archiwum / folderze

Niektóre pliki są czytelne dla człowieka i mogą pomóc w rozwiązaniu problemu.

Inne pliki są bardziej zorientowane na programistę.

Związane z:

W przypadku niepełnego uruchomienia sysdiagnosemoże być przydatne zwrócenie uwagi na pliki, które są nienormalnie puste…


Uwagi techniczne i inne

stackshot (1) OS X Podręcznik Strona

sysdiagnose (1) OS X Podręcznik Strona

Niektóre z powyższych informacji to bardziej ogólne wydanie zaakceptowanej odpowiedzi, które pojawia się w innym miejscu.


Informacje diagnostyczne i dotyczące użytkowania, inne interesujące pliki

Kieruj się listą dzienników w konsoli:

Zrzut ekranu paska bocznego konsoli

Oczekuj, że znajdziesz pliki w następujących ścieżkach:

  • ~ / Library / Logs / DiagnosticReports
  • / Library / Logs / DiagnosticReports
  • ~ / Library / Logs
  • / Library / Logs
  • / private / var / log
Graham Perrin
źródło
2
→ Graham: to jest dzień +: coś do nauki! Myślę, że tego rodzaju narzędzie przyniosłoby korzyści wszystkim sysadminom, gdyby było open source.
dan
0

Console

Aby znaleźć istniejące pliki diagnostyczne lub awarie, otwórz aplikację konsoli i znajdź pliki w sekcjach Raporty użytkownika (zlokalizowane w ~/Library/Logs/DiagnosticReports) lub Raporty systemowe (zlokalizowane w /Library/Logs/DiagnosticReports). Zobacz: Gdzie mogę znaleźć moje dzienniki awarii?

sysdiagnose

Zgodnie z oficjalnymi sysdiagnoseinstrukcjami dla systemu macOS możesz uruchomić sysdiagnosedowolny z następujących sposobów:

Uwaga: Aby uzyskać dostęp do powyższego linku, musisz najpierw zalogować się do witryny programisty Apple .

  • Krótko naciśnij jednocześnie następujące klawisze:

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

    i czekaj. sysdiagnoseProces może trwać 10 minut. Po zakończeniu Finder powinien automatycznie pojawić się, pokazując wygenerowany plik w /private/var/tmp/(np sysdiagnose_2017.mm.dd_hh-mm-ss-0000_12345.tar.gz.).

  • sysdiagnoseUruchom a z Terminala, wprowadzając to polecenie:

    sudo sysdiagnose
    

zrzuty rdzenia

Aby wygenerować zrzuty rdzenia awarii, zobacz: Jak wygenerować zrzuty rdzenia w systemie macOS?

kenorb
źródło