Wo kann man nach der Kerndatei suchen, die durch den Absturz einer Linux-Anwendung erzeugt wurde?

18

Ich versuche, den Grund für den Absturz einer meiner Linux-Anwendungen herauszufinden. Aber ich weiß nicht, wohin der Kern geht.

cat /proc/sys/kernel/core_pattern
core.%e.%p

Irgendeine Idee?

dcds
quelle

Antworten:

22

Der Core-Dump wird zum Zeitpunkt des Absturzes in das aktuelle Verzeichnis des Prozesses geschrieben.

Natürlich müssen Core Dumps aktiviert sein, standardmäßig sind diese normalerweise deaktiviert. Überprüfen Sie die Ausgabe von ulimit -c, wenn das 0 ist, dann wird keine Kerndatei geschrieben. Ausführen ulimit -c unlimited, um Core-Dumps zu aktivieren. Dies ist eine Einstellung pro Prozess, die von Prozessen geerbt wird, die von diesem Prozess gestartet wurden.

Wenn ein Core-Dump hätte generiert werden sollen, Sie aber nicht wissen, wo sich der Prozess befindet, können Sie den Prozess erneut starten (wenn dies nicht der Fall ist, können Sie ihn sofort abstürzen lassen). Überprüfen Sie dann das Arbeitsverzeichnis, indem Sie angeben, ls -l /proc/$pid/cwdwo $pidsich die Prozess-ID des Prozesses befindet. Dieser Link verweist auf das aktuelle Arbeitsverzeichnis dieses Prozesses. Die Chancen stehen gut, dass der Core Dump da sein wird. Andernfalls müssen Sie findauf dem gesamten System ausgeführt werden ...

wurtel
quelle
3
Ich habe ulimit -c als unbegrenzt markiert, aber es befindet sich immer noch nichts im aktuellen Prozessverzeichnis.
dcds
1
Es ist möglich, dass die Anwendung selbst einen schwerwiegenden Fehler entdeckt und abgebrochen hat, dh es handelt sich nicht um einen "echten" Absturz wie eine Segmentierungsverletzung oder ähnliches, der einen Core-Dump erzeugen würde . Da Sie keine Informationen über die Anwendung angeben, ist es nicht möglich, dies zu wissen.
Wurtel
1
Es ist definitiv ein Absturz, weil ich wissentlich einen Nullzeiger mache.
dcds
20

Systeme, die systemd verwenden, sind normalerweise so konfiguriert, dass sie Kerne sichern

/var/lib/systemd/coredump/

Sie können den coredumpctlBefehl verwenden, um Core-Dumps aufzulisten. Siehe auch no-more-coredumps-after-migrating-to-systemd

StefanQ
quelle