Come si ottengono i file di diagnostica del sistema da macOS?


20

Sto cercando di eseguire il debug di un'app bloccata (o sospesa). Come posso ottenere i file di diagnostica dall'arresto anomalo?

Risposte:


19

I singoli rapporti sugli arresti anomali sono archiviati in ~ / Library / Logs / CrashReporter ma esiste uno strumento di raccolta dei registri a livello di sistema chiamato sysdiagnose .

Una volta che inizi a riscontrare il problema, tieni premuti i 4 tasti di controllo e quindi premi il punto "." chiave. shift+ control+ option+ command+.

Dopo circa 15 secondi, si aprirà una finestra del Finder con un file sysdiagnose evidenziato.

Quando inizi a riscontrare il problema, tieni premuti i tasti "Maiusc" + "Controllo" + "Opzione" + "Comando", quindi premi il punto "."  chiave.

Questo collegamento esegue semplicemente il sysdiagnosecomando, quindi se si ha familiarità con il terminale e si desidera passare un ID processo, è possibile ottenere informazioni di debug avanzate su quel programma specifico. La scorciatoia da tastiera chiama lo strumento senza argomenti e acquisisce solo il report di base.


c'è un modo per ottenerlo dalla riga di comando?
Sidasa,

1
~/Library/Logs/CrashReporternon contiene .crashfile. Invece: /Library/Logs/DiagnosticReportse~/Library/Logs/DiagnosticReports
Graham Perrin,

L'accordo chiave per sysdiagnose funzionerà solo se il demone stackshot viene eseguito. Nella mia risposta , il launchctlcomando avvierà il demone.
Graham Perrin,

il sysdiagnosecomando è disponibile anche in OS 10.6? Non trovo una pagina man e which sysdiagnosenon restituisce nulla in OS 10.6.8 o devo installarla esplicitamente?
braccia,

1
@Martin la mia risposta è modificata per rispondere alla tua domanda.
Graham Perrin,

16

Diagnosi di mele

Questo script shell (su 10.8 e precedenti) e programma eseguibile con lo stesso nome su 10.9:

  • raccoglie informazioni diagnostiche a livello di sistema
  • è parte integrante di OS X Lion e versioni successive
  • non è disponibile come download separato
  • non è open source (ho chiesto ad Apple di farlo).

Prepararsi all'approccio della sola tastiera al sysdiagnose

In Terminale, eseguire il comando seguente.

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.stackshot.plist
  • se viene richiesta una password, immettere la password dell'amministratore per il sistema operativo
  • è una tantum, non è necessario ripetere il comando.

Prendi nota del seguente accordo chiave, ne avrai bisogno in seguito:

Control- Option- Command- Shift-.

Diagnosi dal sistema

Quando si verifica un problema:

  1. usa l'accordo chiave
  2. per almeno dieci secondi, non toccare nulla
  3. concedi forse cinque o dieci minuti per completare tutte le parti della sysdiagnoseroutine - attendi il più a lungo possibile (non ci sarà alcuna indicazione sullo schermo dei progressi)
  4. Il Finder dovrebbe aprire una finestra sul risultato finale.

Eccezionalmente

In rari casi, un problema può impedire il completamento del sysdiagnose (ho presentato suggerimenti di miglioramento ad Apple). Se ciò accade, se sei sicuro di aver atteso abbastanza a lungo, potrebbe essere sensato riavviare il Mac. Poi:

  1. in Finder, vai a /private/var/tmp
  2. cerca un file o una cartella con un nome che inizia con sysdiagnose_
  3. se quel file o cartella esiste, spostalo in un posto comodo - il tuo desktop, forse.

suggerimenti

Senza l'accordo chiave, puoi eseguire sysdiagnose dalla riga di comando (vedi sotto, pagina del manuale di Apple). Ma è spesso più utile, o necessario, usare l'accordo, quindi preparati.

Anche se non incoraggio la disattenzione, puoi essere un po 'disattento con Control- Option- Command- Shift- .... se fai fatica a evitare la fnchiave del tuo laptop, non preoccuparti; includerlo per caso non dovrebbe impedire la corsa di sysdiagnose.


Analisi umana della diagnosi da parte del sistema

Suggerimento: a qualcuno potrebbe piacere porre una domanda separata sull'analisi dei risultati di sysdiagnose: una risposta più generalizzata potrebbe essere utile.

Se sysdiagnose_… /tmpdall'area è un file

La presenza di un sysdiagnose_….tar.gzfile indica che tutte le parti della sysdiagnoseroutine sono state completate e che i risultati sono stati archiviati. Se lo desideri, apri l'archivio: il suo contenuto apparirà come una cartella.

Se sysdiagnose_… /tmpdall'area è una cartella

La presenza di una sysdiagnose_…cartella (non di un .tar.gzfile) indica che:

  • la routine è stata interrotta prima del completamento; o
  • alcune parti della routine non sono state completate.

All'interno dell'archivio / cartella

Alcuni file sono leggibili dall'uomo e possono aiutare a risolvere un problema.

Altri file sono più orientati agli sviluppatori.

Relazionato:

Per un'esecuzione incompletasysdiagnose può essere utile focalizzare l'attenzione su file che sono anormalmente vuoti ...


Note tecniche e di altro tipo

stackshot (1) Pagina di manuale di OS X.

sysdiagnose (1) Pagina di manuale di OS X.

Parte di quanto sopra è un'edizione più generica di una risposta accettata che appare altrove.


Informazioni diagnostiche e di utilizzo, altri file di interesse

Lasciati guidare dall'elenco dei registri nella Console:

Uno screenshot della barra laterale della console

Aspettati di trovare i file nei seguenti percorsi:

  • ~ / Library / Logs / DiagnosticReports
  • / Library / Logs / DiagnosticReports
  • ~ / Library / Logs
  • / Library / Logs
  • / Private / var / log

2
→ Graham: questo è un + giorno: qualcosa da imparare! Penso che questo tipo di strumento andrebbe a beneficio di tutti gli input di amministratore di sistema se fosse open source.
dan

0

Console

Per trovare i file diagnostici o di arresto anomalo esistenti, apri l' app Console e trova i file nelle sezioni Rapporti utente (disponibile in ~/Library/Logs/DiagnosticReports) o Rapporti di sistema (situato in /Library/Logs/DiagnosticReports). Vedi: Dove posso trovare i miei registri degli arresti anomali?

sysdiagnose

Come da istruzioni ufficialisysdiagnose per macOS, puoi attivare uno dei seguenti sysdiagnosemodi:

Nota: per accedere al link sopra, è necessario prima accedere al sito Apple dello sviluppatore .

  • Premere brevemente contemporaneamente i seguenti tasti:

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

    e aspetta. Il completamento del sysdiagnoseprocesso può richiedere 10 minuti. Una volta terminato, Finder dovrebbe apparire automaticamente mostrando il file generato in /private/var/tmp/(ad es sysdiagnose_2017.mm.dd_hh-mm-ss-0000_12345.tar.gz.).

  • Attiva a sysdiagnoseda Terminale inserendo questo comando:

    sudo sysdiagnose
    

core dump

Per generare dump di crash core, vedi: Come generare dump di core su macOS?

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.