Cos’è un Core Dump?

Un core dump è un record del contenuto della memoria di un computer quando si è verificato un errore grave. Può includere l’intera memoria di sistema o solo la parte utilizzata dal programma che ha avuto esito negativo. Può anche includere altri dati rilevanti come lo stato del processore, i contenuti del registro e le informazioni sui processi in esecuzione. Gli ingegneri del software utilizzano spesso i core dump con i debugger e altre utilità per analizzare e correggere gli errori del computer. Un core dump può essere utilizzato anche per trasferire un processo di lavoro da un processore a un altro durante il normale funzionamento.

Il termine “core dump” probabilmente ha avuto origine negli anni ‘1960, quando i primi computer utilizzavano la memoria del nucleo magnetico. Quando un programma in esecuzione si arrestava in modo anomalo, tutti i dati dell’intero core venivano stampati su carta per facilitare il debug. Queste stampe di solito consistevano in poco più che indirizzi di memoria e dati in notazione ottale o esadecimale. Con il miglioramento delle tecnologie di archiviazione, i core dump possono essere salvati su disco, nastro magnetico rimovibile o memory stick non volatili. La maggiore capacità di archiviazione per le informazioni sullo stato insieme ai progressi nel debug del software hanno reso più efficiente la diagnosi degli errori.

Le cause tipiche dei core dump sono le applicazioni scritte male o il software di sistema. Molto spesso, il codice di programma presuppone che i puntatori e gli indici di array facciano sempre riferimento a strutture di dati valide. Se qualcuno di questi si è spostato oltre i limiti delle loro strutture originali, ad esempio, potrebbe verificarsi un core dump. Anche i problemi di accesso ai file di dati su un dispositivo di archiviazione o la lettura di dati danneggiati possono causare un core dump. Anche problemi hardware, tra cui memoria malfunzionante, dischi rigidi o processori, possono attivarli.

Esistono generalmente due tipi di core dump. Un tipo è quello in cui il processo o il programma applicativo in esecuzione viene terminato e il controllo ritorna al sistema operativo. In questo caso, il resto del sistema continua a funzionare normalmente poiché solo il programma incriminato è stato interrotto. Di solito viene generato un file core dump di grandi dimensioni che può quindi essere caricato in un debugger. Se l’errore si è verificato in un programma per il quale sono disponibili i simboli e il codice sorgente, anche questi possono essere caricati nel debugger.

L’altro tipo più serio di core dump è anche chiamato kernel panic. Questo tipo di dump interrompe l’intero sistema nelle sue tracce al fine di prevenire ulteriori complicazioni e il danneggiamento dei dati. Sui sistemi Microsoft Windows®, questo tipo di dump di solito si verifica nella forma fin troppo familiare di una “schermata blu della morte”. Panico come questi sono solitamente più difficili da eseguire il debug e sono spesso causati da problemi hardware o a livello di sistema. Questi possono verificarsi prima che il sistema abbia terminato l’avvio quando sono disponibili poche informazioni sulla causa effettiva.