Utilizzare la traccia dello stack di stampa GDB del file core

Utilizzare la traccia dello stack di stampa GDB del file core
Se hai programmato da un po ', ti sei imbattuto nel termine Dump core.

Se guardi la pagina principale del man, definisce il dump core come "un file contenente un'immagine della memoria del processo al momento della terminazione. Questa immagine può essere utilizzata in un debugger (e.G.) GDB per ispezionare lo stato del programma nel momento in cui ha terminato ".

In termini semplici, un file di dump principale è un file che contiene informazioni sulla memoria su un processo quando il processo specifico termina.

Ci sono vari motivi per cui i processi potrebbero arrestare e creare un file di dump principale. Questo tutorial ti mostrerà come utilizzare GDB per visualizzare il file di dump core e stampare la traccia dello stack.

Passaggio 1: ottieni un dump centrale

Prima di iniziare ad analizzare il file di dump principale, dobbiamo generarne uno. Per fare questo, possiamo usare un programma buggy.

Considera il codice buggy.C Di seguito:

#includere
#includere
#includere
int main ()
int num = 0;
int *ptr = malloc (sizeof (int));
int *noptr = null;
per (Inti = 0; i<10; i++)
if (i == 5)
*noptr = i;

altro
*ptr = i;

printf ("i is %d \ n", i);

Nel codice sopra, creiamo un ciclo per 0 e 10. Se il valore di I è 5, facciamo riferimento a un po 'di cattiva punta, causando così Segfault e creando un dump di base.

clang -g bugg.c -o buggy

Ora esegui il codice come:

./buggy

Il codice sopra darà l'output come:

I è 0
I è 1
I è 2
I è 3
I è 4
Guasto di segmentazione (core scaricato)

Passaggio 2: Apri dump core con GDB

Per aprire il file di dump core con GDB, utilizzare il comando GDB e passare il percorso all'eseguibile e al dump core come parametri come:

$ gdb buggy core

Ciò lancerà GDB e includerà il dump core come mostrato nell'output di seguito:

Per mostrare la traccia dello stack del file principale, utilizzare il comando BackTrace:

(GDB) Backtrace

Conclusione

Questo tutorial ti ha mostrato come utilizzare GDB per aprire un file di dump principale e ottenere la traccia dello stack.