Verwenden Sie die GDB -Druckstapelverfolgung der Kerndatei

Verwenden Sie die GDB -Druckstapelverfolgung der Kerndatei
Wenn Sie schon eine Weile programmiert haben, sind Sie auf den Begriff gestoßen Core-Dump.

Wenn Sie sich die Core Man -Seite ansehen, definiert sie als Kern -Müllkippe als “Eine Datei mit einem Bild des Speicherspeichers des Prozesses zum Zeitpunkt der Beendigung. Dieses Bild kann in einem Debugger verwendet werden (e.G.) GDB, um den Zustand des Programms zu dem Zeitpunkt zu inspizieren, als es beendet wurde. “.

In einfachen Worten ist eine Kern -Dump -Datei eine Datei, die Speicherinformationen zu einem Prozess enthält, wenn der spezifische Prozess endet.

Es gibt verschiedene Gründe, warum Prozesse abstürzen und eine Kern -Dump -Datei erstellen können. In diesem Tutorial werden Ihnen angezeigt.

Schritt 1: Holen Sie sich einen Kern -Müllkippe

Bevor wir mit der Analyse der Core Dump -Datei beginnen, müssen wir eines generieren. Dazu können wir ein Buggy -Programm verwenden.

Betrachten Sie den Code Buggy.c unten:

#enthalten
#enthalten
#enthalten
int main ()
int num = 0;
int *ptr = malloc (sizeof (int));
int *noPtr = null;
für (inti = 0; i<10; i++)
if (i == 5)
*nOptr = i;

anders
*ptr = i;

printf ("Ich ist %d \ n", i);

Im obigen Code erstellen wir eine für die Schleife zwischen 0 und 10. Wenn der Wert von I 5 ist, verweisen wir auf einen schlechten Zeiger.

Clang -g Bugg.C -o Buggy

Führen Sie nun den Code als:

./Buggy

Der obige Code gibt die Ausgabe als:

Ich ist 0
Ich ist 1
Ich ist 2
Ich ist 3
Ich ist 4
Segmentierungsfehler (Core Dumped)

Schritt 2: Open Core Dump mit GDB öffnen

Verwenden Sie den Befehl GDB mit GDB, um die Core -Dump -Datei mit GDB zu öffnen, und übergeben Sie den Pfad an die ausführbare Datei und den Core -Dump als Parameter als:

$ GDB Buggy Core

Dadurch wird GDB gestartet und den Kernmüll enthalten, wie in der folgenden Ausgabe gezeigt:

Verwenden Sie den Befehl Backtrace, um die Stapelverfolgung der Kerndatei anzuzeigen:

(GDB) Backtrace

Abschluss

Dieses Tutorial hat Ihnen gezeigt.