In diesem Tutorial wird erläutert, wie man Core Dump unter Linux aktiviert.
Nach dem Lesen dieses Tutorials können Sie überprüfen, ob Core Dump aktiviert ist, wie Sie es aktivieren oder deaktivieren, wie man anzeigen und mehr.
Kerndateien werden verwendet, um Software -Abstürze zu debugieren und zu debuggen.
Ein Kern-Dump ist eine nicht strukturierte Registrierung des Speicherinhalts, der Informationen zur Ausführung von Software abnormal beendet ist, einschließlich des Grundes für den Absturz.
Mit anderen Worten, dies ist eine Momentaufnahme des Programmstatus mit dem aufgezeichneten Ausgangs- und Beendigungsprozess. Sie können sich an Core Dump als Flugzeugschwarzbox oder eine Protokolldatei erkennen.
Das Core -Dump -Management kann von einer Linux -Verteilung auf andere variieren. Dieses Tutorial ist sowohl für Debian -basierte Linux -Verteilungen wie Ubuntu als auch für Redhat Linux -Verteilungen wie CentOS optimiert.
Alle in diesem Artikel enthaltenen Anweisungen enthalten Screenshots, so.
Aktivieren des Kern -Dumps unter Linux
Der erste Schritt besteht darin, zu prüfen, ob der Core -Dump aktiviert ist. Verwenden Sie zu diesem Zweck den folgenden Befehl. Wenn die Kerndateigröße 0 beträgt, wie im folgenden Beispiel, ist der Core Dump deaktiviert.
Ulimit -a | Grep -Kern
Verwenden Sie den folgenden Befehl, um den Core -Dump unter Linux mit unbegrenzter Größe zu aktivieren. Führen Sie dann den vorherigen Befehl aus, Sie werden sehen, dass die 0 durch unbegrenzt ersetzt wird.
Ulimit -s -C unbegrenzt
Um Core Dump dauerhaft zu aktivieren, müssen Sie die Datei/etc/Sicherheit/Grenzen bearbeiten.Conf. Öffnen Sie es mit Berechtigungen mit einem beliebigen Texteditor.
sudo nano/etc/Sicherheit/Grenzen.Conf
Fügen Sie dann die folgende Zeile hinzu und schließen Sie Speicheränderungen:
* Soft Core Unlimited
Lassen Sie uns nun versuchen, eine Anwendung auszuführen, die so programmiert ist, dass sie absichtlich abstürzen.
Wie Sie im folgenden Screenshot sehen können.
Gemäß der Standardkonfiguration auf Debian -basierten Linux -Verteilungen sollte der Kern -Dump im aktuellen Verzeichnis erstellt werden. Sie können dies überprüfen, indem Sie den folgenden Befehl ausführen:
LS -ltr -Kern
Wie Sie in der vorherigen Abbildung sehen können.
Um es anzusehen, müssen Sie den GNU -Debugger installieren. Sie können es mit APT installieren, wie im Bild unten gezeigt.
Beachte.
sudo apt installieren GDB -y
Verwenden Sie die folgende Syntax, um die Core -Dump -Dateien anzuzeigen:
GDBKern
In meinem Fall renne ich:
GDB CrashingApp -Kern
Sie werden gebeten, "C" zu drücken, um fortzufahren. Drücken Sie es und Sie werden den Bericht sehen.
Standardmäßig werden Core Dump -Dateien als Kern bezeichnet.
sudo sysctl -w -Kernel.core_pattern = core
Sie können die Namens- und Zielmuster ändern, um Kernmülldeponien leicht zu identifizieren.
Der Befehl ist der folgende:
-%u wird die Benutzer -ID in den Kern -Dump -Namen aufnehmen. Der - %g wird die Gruppen -ID und %P der PID enthalten.
sudo sysctl -w -Kernel.core_pattern = core-%u-%g-%p
Wie Sie sehen können, wird nach dem erneuten Ausführen der Absturz -App ein neuer Core -Müllkippe generiert, einschließlich UID, GID und PID.
ls -ltr core*
Es gibt zusätzliche Werte, mit denen Sie Kern -Dump -Muster definieren können. Sie finden sie in der folgenden Liste.
WERT | Funktion |
---|---|
% | '%' ist gefallen |
%% | Ausgabe eines '%' |
%P | Beinhaltet PID |
%P | Beinhaltet globale PID |
%ich | Zeigt Thread -ID an |
%ICH | Globale Thread -ID |
%u | Benutzer-ID |
%G | Gruppen-ID |
%D | Dump -Modus |
%S | Signalzahl |
%T | Unix -Zeit des Dumps |
%H | Hostname |
%e | Ausführbare Datei |
%E | Ausführbarer Dateipfad |
Sie können auch ein Core -Dumps -Verzeichnis definieren, um sie zu speichern.
Die Syntax ist Folgendes:
"/Cored" ist das Verzeichnis, in dem Kernmüllkopien gespeichert werden. Diese Namen werden sowohl PID als auch Global PID enthalten.
sudo sysctl -w -Kernel.core_pattern =/cored/core-%p-%p
Wie Sie sehen können, wurde nach dem Ausführen der Absturz -App der Core -Dump im Verzeichnis /Cored -Verzeichnis sowohl PID als auch GPID gespeichert.
ls -ltr /cored
So deaktivieren Sie Kern -Dumps unter Linux
Das Deaktivieren von Kern -Dump ist so einfach, sie zu aktivieren.
Setzen Sie einfach das Limit auf 0, indem Sie den folgenden Befehl ausführen:
Ulimit -s -c 0
Um den Core -Dump dauerhaft zu deaktivieren, bearbeiten Sie die/etc/Sicherheit/Grenzen.Conf -Datei mit einem beliebigen Texteditor wie in der Abbildung unten gezeigt.
sudo nano/etc/Sicherheit/Grenzen.Conf
Fügen Sie die folgenden 2 Zeilen hinzu und beenden Sie dann Speicheränderungen.
* Weichkern 0
* Hartem Kern 0
Überprüfen Sie schließlich, ob der Core -Dump durch Ausführen Folgendes erfolgreich deaktiviert wurde:
Ulimit -a | Grep -Kern
Wie Sie sehen können, ist die Größengrößengrößen der Datei 0, Core Dump ist deaktiviert.
Abschluss
Kerngegner können sehr hilfreich sein, um Verfahren zu debuggen und Fehler zu identifizieren. Es wird empfohlen, ihnen vertraut zu werden, um die Reaktion der Probleme zu verbessern. Sie können auch nützlich sein, um Daten zu erfassen, die durch dynamisches Speicher befreit werden und Informationen über keine Programme mehr abrufen. Sie können auch hilfreich sein, damit Programmierer Fehler finden können. Ein Kernmüll kann den Zustand eines Prozesses in einem definierten Zustand retten, um später dorthin zurückzukehren. Es kann auch auf einen Remote -Host über ein Netzwerk abgeladen werden (was ein Sicherheitsrisiko darstellt).