1. In CentOS/RHEL ist die Erstellung von Kerndateien standardmäßig deaktiviert. Um es zu aktivieren, führen Sie den folgenden Befehl aus:
# ulimit -S -c unlimited > /dev/null 2>&1
Führen Sie dann das Programm in derselben Shell-Umgebung aus.
2. Um es dauerhaft zu aktivieren, führen Sie bitte die folgenden Schritte aus:
– Bearbeiten Sie /etc/security/limits.conf .
# vi /etc/security/limits.conf * soft core unlimited
Das „* ‘ wird verwendet, um die Coredump-Größe für alle Benutzer auf unbegrenzt zu setzen.
– Bearbeiten Sie /etc/sysctl.conf um den Pfad des Core-Dumps und das Dateiformat der Core-Datei hinzuzufügen. Standardmäßig wird die Kerndatei im Arbeitsverzeichnis des laufenden Prozesses generiert.
# vi /etc/sysctl.conf kernel.core_pattern = /var/crash/core.%e.%p.%h.%t
Hier
/var/crash ist der Pfad und core.%e.%p.%h.%t ist das Dateiformat, wobei:
%e – Name der ausführbaren Datei.
%p – PID des gedumpten Prozesses.
%t – Zeitpunkt des Dumps (Sekunden seit 0:00 Uhr, 1. Januar 1970).
%h – Hostname (dasselbe wie ’Knotenname’, der von uname(2) zurückgegeben wird).
Stellen Sie sicher, dass Prozesse die richtige Berechtigung für das konfigurierte Verzeichnis haben (z. B. /var/carsh/).
– Setzen Sie fs.suid_dumpable für setuid oder anderweitig geschützte/befleckte Binärdateien.
# vi /etc/sysctl.conf fs.suid_dumpable = 2
Im Folgenden ist die Bedeutung der einzelnen vordefinierten Werte aufgeführt:
- 0 – (Standard) :traditionelles Verhalten. Jeder Prozess, der die Berechtigungsstufen geändert hat oder nur ausgeführt wird, wird nicht ausgegeben.
- 1 – (Fehlerbehebung) :Alle Prozesse entleeren den Kern, wenn möglich. Der Core-Dump gehört dem aktuellen Benutzer und es wird keine Sicherheit angewendet. Dies ist nur für System-Debugging-Situationen gedacht.
- 2 – (suidsafe) :Jede Binärdatei, die normalerweise nicht ausgegeben wird, ist nur für Root lesbar. Dadurch kann der Endbenutzer einen solchen Dump entfernen, aber nicht direkt darauf zugreifen. Aus Sicherheitsgründen überschreiben Core-Dumps in diesem Modus weder einander noch andere Dateien. Dieser Modus ist geeignet, wenn Administratoren versuchen, Probleme in einer normalen Umgebung zu debuggen.
– Laden Sie die Einstellungen mit dem folgenden sysctl-Befehl, nachdem Sie /etc/sysctl.conf unten geändert haben:
# sysctl -p
Um Core-Dumps von unsignierten Paketen zu sammeln, setzen Sie OpenGPGCheck =no in /etc/abrt/abrt-action-save-package-data.conf . Um Core-Dumps von unverpackter Software zu sammeln, setzen Sie ProcessUnpackaged =yes in /etc/abrt/abrt-action-save-package-data.conf
– Starten Sie den abrtd-Daemon neu – als root – damit die neuen Einstellungen wirksam werden.
# service abrtd restart # service abrt-ccpp restart
In CentOS/RHEL 7:
# systemctl start abrtd.service # systemctl start abrt-ccpp.service
Jetzt ist CentOS/RHEL bereit, Core-Dump-Dateien zu generieren, wenn Prozesse mit Segfault abgebrochen werden.
Hinweis :Die vom Red Hat Automatic Bug Reporting Tool (ABRT) bereitgestellten Daemons und Funktionen werden von CentOS/RHEL nicht unterstützt. ABRT-Pakete und zugehörige Dateien wie libreport sind in der Distribution enthalten, um Paketabhängigkeiten zu erfüllen, aber die Funktionen in diesen Paketen werden nicht unterstützt.