Ich bin auf CentOS 6 und versuche, Core-Dumps für eine Anwendung zu aktivieren, die ich entwickle. Ich habe getan:
ulimit -H -c unlimited >/dev/null
ulimit -S -c unlimited >/dev/null
in meinem Bash-Profil, aber ein Core-Dump wurde immer noch nicht generiert (in einem neuen Terminal).
Ich habe auch meine /etc/security/limits.conf so geändert, dass die weichen Grenzen für alle Benutzer Null sind.
Wie lege ich den Speicherort der auszugebenden Core-Dateien fest? Ich wollte den Speicherort angeben und den Zeitpunkt, zu dem der Speicherauszug erstellt wurde, als Teil des Dateinamens anhängen.
Antworten:
Um die Position der Core-Dumps in CentOS 6 festzulegen, können Sie sie bearbeiten
/etc/sysctl.conf
. Zum Beispiel, wenn Sie Core-Dumps in/var/crash
:Wo Variablen sind:
Auch müssen Sie hinzufügen
/etc/sysconfig/init
Wenden Sie jetzt neue Änderungen an:
Aber es gibt eine Einschränkung auf diese Weise. Wenn der Kernelparameter kernel.core_pattern immer zurückgesetzt und beim Neustart auf die folgende Konfiguration überschrieben wird, auch wenn ein Wert manuell in angegeben wird
/etc/sysctl.conf
:Kurz, wenn
abrtd.service
Startskernel.core_pattern
automatisch vom installierten System überschrieben werdenabrt-addon-ccpp
. Es gibt zwei Möglichkeiten, dies zu beheben:Einstellmöglichkeit
DumpLocation
in der/etc/abrt/abrt.conf
Konfigurationsdatei. Das Zielverzeichnis kann durch Festlegen von DumpLocation =/var/crash
in der/etc/abrt/abrt.conf
Konfigurationsdatei angegeben werden.sysctl kernel.core_pattern
Der angezeigte Wert ist derselbe, aber die eigentliche Kerndatei wird im Verzeichnis unter erstellt/var/crash
.Auch wenn Sie SELinux aktiviert haben, müssen Sie Folgendes ausführen:
Und zum Schluss nochmal neu starten
abrtd.service
:Beenden Sie abrtd service.
kernel.core_pattern
wird nicht überschrieben. - (habe ich noch nie getestet).quelle
Um einen Core-Dump auf Busybox zu generieren, können wir im Initialisierungsskript, das unsere ausführbare Datei ausführt, die folgenden Parameter hinzufügen. Wenn wir also Software initialisieren und Umgebungsvariablen exportieren, können wir die folgenden Zeilen auch in das Skript kopieren, um den Core zu sichern, falls ein Absturz auftritt.
Um den Speicherort der Core-Dumps in Busybox festzulegen, können Sie den Core-Dateipfad mithilfe des Proc-Dateisystems festlegen. Zum Beispiel, wenn Sie Core-Dumps in
/tmp/crash/corefiles
:Wo Variablen sind:
Außerdem müssen Sie die Kerndateigröße festlegen. Mit dem folgenden Befehl wird die Kerndateigröße auf unbegrenzt festgelegt
Um nun die für jeden Thread innerhalb eines Prozesses festgelegte Kerndateigröße zu überprüfen, können wir Folgendes verwenden
Die Ausgabe des obigen Befehls:
Wie aus der obigen Ausgabe hervorgeht, ist die maximale Kerndateigröße auf unbegrenzt festgelegt.
Für weitere Informationen besuchen Sie bitte diesen Link. Debugging-Techniken für Linux-Anwendungen / Core-Dateien
quelle