Come abilitare il dump core in Linux

Come abilitare il dump core in Linux

Questo tutorial spiega come abilitare il dump core in Linux.

Dopo aver letto questo tutorial sarai in grado di verificare se il dump core è abilitato, come abilitarlo o disabilitarlo, come visualizzare e altro ancora.

I file di dump core vengono utilizzati per diagnosticare e debug software Crash.

Un dump di base è un registro non strutturato del contenuto di memoria contenente informazioni sull'esecuzione del software terminato in modo anomalo, incluso il motivo del crash.

In altre parole, questa è un'istantanea dello stato del programma con il processo di esecuzione e terminazione registrato. Puoi pensare a Core Dump come una scatola nera dell'aereo o un file di registro.

La gestione del dump core può variare da una distribuzione Linux all'altra, questo tutorial è ottimizzato sia per le distribuzioni Linux basate su Debian come Ubuntu, sia le distribuzioni di Redhat Linux come CentOS.

Tutte le istruzioni incluse in questo articolo contengono schermate, rendendo facile per ogni utente Linux comprenderli e seguirli.

Abilitazione del dump core in Linux

Il primo passo è verificare se il dump core è abilitato. A tale scopo, usa il comando seguente. Se la dimensione del file principale è 0, come nell'esempio seguente, il dump core è disabilitato.

Ulimit -A | Grep Core


Per abilitare il dump core in Linux, con dimensioni illimitate, utilizzare il comando seguente. Quindi, esegui il comando precedente, vedrai che 0 viene sostituito con illimitato.

Ulimit -s -c Unlimited

Per abilitare in modo permanente il dump core, è necessario modificare il file/etc/sicurezza/limiti.conf. Aprilo con privilegi utilizzando qualsiasi editor di testo.

sudo nano/etc/sicurezza/limiti.conf

Quindi, aggiungi la riga seguente e chiudi le modifiche al risparmio:

* Soft Core Unlimited

Ora, proviamo a eseguire un'applicazione programmata per crash intenzionalmente.

Come puoi vedere nello screenshot qui sotto, è stato generato il dump core.

Secondo la configurazione predefinita sulle distribuzioni Linux basate su Debian, il dump core dovrebbe essere creato nella directory corrente. Puoi verificarlo eseguendo il seguente comando:

LS -LTR CORE

Come puoi vedere nella figura precedente, il dump core è stato generato correttamente.

Per visualizzarlo, è necessario installare il debugger GNU. È possibile installarlo utilizzando APT come mostrato nell'immagine seguente.

Si noti che gli utenti di sistemi basati su RedHat devono utilizzare lo strumento di reporting dei bug automatici (ABRT) anziché GDB.

SUDO APT INSTALL GDB -Y

Per visualizzare i file di dump core, utilizzare la seguente sintassi:

GDB nucleo

Nel mio caso corro:

GDB CrashingApp Core

Ti verrà chiesto di premere "c" per continuare. Premilo e vedrai il rapporto.

Per impostazione predefinita, i file di dump core sono chiamati core.

sudo syscctl -w kernel.core_pattern = core

È possibile modificare il nome e i modelli di destinazione per identificare facilmente i dump core.

Il comando è il seguente:

-%u includerà l'ID utente nel nome del dump principale. Il - %g includerà l'ID del gruppo e %p il PID.

sudo syscctl -w kernel.core_pattern = core-%u-%g-%p

Come puoi vedere, dopo aver nuovamente eseguito l'app di arresto anomalo, viene generato un nuovo dump core tra cui UID, GID e PID.

LS -LTR CORE*

Ci sono ulteriori valori che puoi utilizzare per definire i modelli di dump core. Puoi trovarli nell'elenco qui sotto.

VALORE Funzione
% '%' viene lasciato cadere
%% Output One '%'
%P Include PID
%P Include PID globale
%io Mostra l'ID thread
%IO ID thread globale
%u ID utente
%G Gruppo ID
%D Modalità dump
%S Numero del segnale
%T Tempo di UNIX di dump
%H Nome host
%e File eseguibile
%E Percorso del file eseguibile

Puoi anche definire una directory di dumps core per archiviarli.

La sintassi è la seguente:

"/Cored" è la directory in cui verranno archiviati i dump core. Questi nomi includeranno sia PID che globale PID.

sudo syscctl -w kernel.core_pattern =/cored/core-%p-%p

Come puoi vedere, dopo aver eseguito l'app Crashing, il dump principale è stato archiviato nella directory /cored inclusi sia PID che GPID.

ls -ltr /cored

Come disabilitare i dump core in Linux

La disabilitazione del dump core è così semplice come abilitarli.

Basta impostare il limite su 0 eseguendo il seguente comando:

Ulimit -s -c 0

Per disabilitare permanentemente il dump core, modificare/ecc/sicurezza/limiti.File conf usando qualsiasi editor di testo come mostrato nella figura seguente.

sudo nano/etc/sicurezza/limiti.conf

Aggiungi le seguenti 2 righe, quindi esci dal risparmio delle modifiche.

* soft core 0
* Hard Core 0

Infine, controlla se Core Dump è stato disabilitato correttamente eseguendo quanto segue:

Ulimit -A | Grep Core

Come puoi vedere il limite di dimensione del file principale è 0, il dump core è disabilitato.

Conclusione

I dump di base possono essere molto utili per le procedure di debug e identificare i guasti. Si raccomanda di familiarità per migliorare la risposta ai problemi. Possono anche essere utili per acquisire dati liberati dalla memoria dinamica, recuperando informazioni su non più esecuzione di programmi. Possono anche essere utili per i programmatori per trovare errori. Un dump di base può salvare lo stato di un processo in uno stato definito per tornare in seguito. Può anche essere scaricato su un host remoto su una rete (che è un rischio per la sicurezza).