2013-04-16 13 views
27

Ich möchte den Standardspeicherort der Core-Dump-Dateien ändern, so dass jedes Mal, wenn ein Core-Dump erstellt wird, in dieses Verzeichnis gewechselt wird.Außerdem ist es möglich, die Speicherauszugsdatei unter dem Namen zu speichern abgestürzte Datei an diesem Ort?Ändern des Speicherorts des Core-Dumps

+0

Die "was passiert" Version: http://stackoverflow.com/questions/2065912/core-dumped-but-core-file-is- nicht im aktuellen Verzeichnis? –

Antwort

44

Ja, ist es. Sie können /proc/sys/kernel/core_pattern ändern, um den Pfadnamen zu definieren, der zum Generieren der Corefile verwendet wird. Weitere Informationen finden sich man core

Beispiel:

echo '/tmp/core_%e.%p' | sudo tee /proc/sys/kernel/core_pattern 

würde dazu führen, alle zukünftigen Core-Dumps in /tmp erzeugt werden und core_[program].[pid]

+12

+1 für den 'Tee' Trick;) Beachten Sie, dass es auch' sysctl' gibt. Dann ist es 'sysctl -w kernel.core_pattern = '/ tmp/core_% e.% P'' – hek2mgl

+0

Dies funktioniert nicht auf CentOS 7. – Ali

+1

@Ali -" funktioniert nicht "ist keine nützliche Problembeschreibung. Es sollte, wenn nicht die Aufzählungszeichen in der [core manpage] (http: // www. Unix.com/man-page/centos/5/core /), und wenn das Problem weiterhin besteht, stellen Sie eine neue Frage, Kommentare sind nicht der richtige Ort, um neue Probleme zu diskutieren. – mata

23

Bevor Sie die Anweisungen in der akzeptierte Antwort genannt werden, könnte es gut sein, Idee, den Inhalt von /proc/sys/kernel/core_pattern zu überprüfen, um zu sehen, ob das Redhat abrt-System verwendet wird.

-> cat /proc/sys/kernel/core_pattern 
|/usr/libexec/abrt-hook-ccpp %s %c %p %u %g %t e 

Wenn das in Gebrauch ist, dann haben Sie bereits ein ziemlich umfangreiches Programm Core-Dateien für die Verwaltung, die Sie wollen würde, verstehen, bevor Sie es überschreiben.

Auf den Punkt gebracht, abrt:

  1. setzt die Core-Dateien hier: /var/spool/abrt/
  2. hat eine gui, die mit dem Befehl abrt-gui
  3. erweitert die corefile mit zusätzlichen Informationen über den ausgefallenen Prozess gestartet wird.
  4. wird mit dieser Datei konfigurieren: /etc/abrt/abrt-action-save-package-data.conf

Ein gemeinsames Hemmschuh bei der Verwendung ist diese Zeile in der Konfigurationsdatei zu ändern:

ProcessUnpackaged = no 

ändern, die ja Core-Dateien zu erfassen von Ihrem Homebrew-Prozesse, andernfalls werden nur Corefiles von Programmen erfasst, die vom Paketmanager installiert wurden.

[EDIT zu beantworten, wie coredump verwenden] Um einen Core-Dump ich dies tun zu untersuchen:

cd /var/spool/abrt/XXXXXXX 
gdb $(cat executable) coredump 

Es könnte einen besseren Weg, um damit sein, aber gdb hat mir gute Dienste geleistet, so habe ich nicht suchte nach anderen Wegen. Ersetzen Sie XXXXXXX einfach durch den Ordner, der Ihre Coredump-Datei enthält. Der Befehl gdb wird ausgeschnitten und eingefügt.

Referenzen:

Redhat Book

CentOS Forum

+0

danke für diese Info. Ich habe die coredump Datei, aber wie man es mit abrt öffnet? – Devos

+0

Wenn Sie nicht sicher sind, wie die Core-Datei generiert wurde, führen Sie einfach #file core.XYZ aus - dies zeigt den Befehl an, der zum Generieren der Corefile ausgeführt wurde. – kumar