Come si visualizza il file CoreDump?

12

Quando si segnala un bug da un arresto anomalo, il bug viene reso privato e un file chiamato CoreDump.gz. La documentazione di Triage dei bug dice quanto segue:

  

Se il crash ha ancora un allegato CoreDump.gz, allora non lo era   possibile ottenere automaticamente una traccia dello stack completamente simbolica e controllare   per i duplicati.

Stacktrace.txt sembra leggibile da un essere umano. Come posso capire il significato di una traccia dello stack. CoreDump con CoreDump.gz non sembra leggibile dall'uomo. Che cos'è una "traccia di stack completamente simbolica"? Qual è la differenza tra una "traccia dello stack completamente simbolica" Come posso visualizzare il contenuto di un file CoreDump? (provato 'gatto', ma non è pulito)

    
posta komputes 30.09.2011 - 21:10
fonte

1 risposta

15

Coredump.gz è la memoria (compressa) accessibile dal programma che si è arrestato in modo anomalo. È un file binario. I coredumps sono un tesoro, con tutti i tipi di dati privati ​​da estrarre.

Coredumps possono essere visualizzati eseguendo 'gdb':

gdb --core=mycoredump

Naturalmente, avrai ancora bisogno dei pacchetti di debug associati a questo core.

È quindi possibile generare uno stacktrace di:

(gdb) bt

per generare uno stacktrace del thread corrente - senza risoluzione dei parametri -, o

(gdb) thread apply all bt full

per generare uno stacktrace di tutti i thread nel coredump, con risoluzione dei parametri.

stacktrace e stacktraces completi mostrano il flusso di controllo all'interno di un programma. Per Python, la parte superiore dello stacktrace mostra la chiamata meno recente, con la più recente nella parte inferiore; per quasi tutto il resto, la parte superiore è la chiamata più recente e la parte inferiore quella più vecchia.

Uno stacktrace completo non mostrerà solo il flusso, ma anche i valori del parametro. Questo è dove solitamente troviamo i dati privati ​​- ad esempio, supponiamo di vedere una funzione chiamata "validatePassword" con un parametro chiamato "Password" e un valore di "MySecretPassword" ...

Gli stacktrace di solito sono utili solo se i pacchetti di debug sono installati (in modo che i frame dello stack possano essere risolti in qualcosa che possiamo facilmente leggere). L'analisi di uno stacktrace richiederà di avere i sorgenti che sono stati usati per costruire questa specifica istanza di programma.

    
risposta data hggdh 30.09.2011 - 21:27
fonte

Leggi altre domande sui tag