Sì. Puoi cambiare /proc/sys/kernel/core_pattern
per definire il percorso utilizzato per generare il corefile. Per ulteriori informazioni, vedi man core
esempio:
echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern # `tee' instead of > so that
# opening happens in the
# elevated process
causerebbe la generazione di tutti i futuri core dump in /tmp
e chiamarsi core_[program].[pid]
Prima di seguire le istruzioni nella risposta accettata, potrebbe essere una buona idea controllare il contenuto di /proc/sys/kernel/core_pattern
per vedere se il sistema abrt Redhat è in uso.
-> cat /proc/sys/kernel/core_pattern
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e
Se è in uso, allora hai già uno schema piuttosto esteso per la gestione dei file core che vorresti capire prima di sovrascriverlo.
In poche parole, abrt:
- inserisce qui i file principali:
/var/spool/abrt/
- ha una GUI che viene avviata con il comando
abrt-gui
- aumenta il corefile con ulteriori informazioni sul processo non riuscito.
- è configurato con questo file:
/etc/abrt/abrt-action-save-package-data.conf
Un ostacolo comune nell'usarlo è cambiare questa riga nel file di configurazione:
ProcessUnpackaged = no
Cambialo in yes per acquisire i file core dai tuoi processi homebrew, altrimenti catturerà solo i file core dai programmi installati dal gestore pacchetti.
[EDIT to answer how to use coredump]Per esaminare un core dump faccio questo:
cd /var/spool/abrt/XXXXXXX
gdb $(cat executable) coredump
Potrebbe esserci un modo migliore per farlo, ma gdb mi ha servito bene, quindi non ho cercato altri modi. Basta sostituire XXXXXXX con la cartella che contiene il file coredump. Il comando gdb è pronto per tagliare e incollare.
Riferimenti:
Red Hat Book
Forum CentOS