logo

GDB (Introducció pas a pas)

GDB significa GNU Project Debugger i és una potent eina de depuració per a C (juntament amb altres llenguatges com C++). Us ajuda a explorar els vostres programes C mentre s'executen i també us permet veure què passa exactament quan el vostre programa es bloqueja. GDB opera amb fitxers executables que són fitxers binaris produïts pel procés de compilació.

Amb finalitats de demostració, l'exemple següent s'executa en una màquina Linux amb les especificacions següents.



uname -a>
uname

uname -a

Aprenem fent: -

Inicia GDB

Aneu al vostre indicador d'ordres de Linux i escriviu gdb.

gdb>

gdb



comproveu el null a Java

L'indicador obert de Gdb us permet saber que està preparat per a ordres. Per sortir de gdb, escriviu sortir o q.

sortir_gdb

Abandonar

Compilar el codi

A continuació es mostra un programa que mostra un comportament no definit quan es compila amb C99. llista-1



Nota: Si un objecte que té una durada d'emmagatzematge automàtica no s'inicia de manera explícita, el seu valor és indeterminat, on el valor indeterminat és un valor no especificat o una representació de trampa.

Ara compileu el codi. (aquí prova.c). bandera g vol dir que podeu veure els noms propis de les variables i les funcions als marcs de la vostra pila, obtenir números de línia i veure la font mentre feu un pas per l'executable. -std=C99 bandera implica utilitzar l'estàndard C99 per compilar el codi. -o bandera escriu la sortida de compilació en un fitxer de sortida.

gcc -std=c99 -g -o test test.C>

gcc -std=c99 -g -o prova de prova.C

Executeu GDB amb l'executable generat

Escriviu l'ordre següent per iniciar GDB amb l'executable compilat.

gdb ./test>

gdb ./prova

Ordres GDB útils:

Aquí hi ha algunes ordres útils per començar amb GDB.

Comandament Descripció
córrer o r Executa el programa de principi a fi.
trencar o b Estableix un punt d'interrupció en una línia concreta.
desactivar Desactiva un punt d'interrupció
habilitar Habilita un punt d'interrupció desactivat.
següent o n Executa la següent línia de codi sense capbussar-se en les funcions.
pas Passa a la següent instrucció, endinsant-se en la funció.
llista o l Mostra el codi.
imprimir o pàg Mostra el valor d'una variable.
sortir o q Sortides de GDB.
clar Esborra tots els punts d'interrupció.
continuar Continua amb l'execució normal

Mostra el codi

Ara, escriviu l a la sol·licitud de gdb per mostrar el codi.

punt d'interrupció

Mostra el codi

Estableix un punt d'interrupció

Introduïm un punt de ruptura, per exemple la línia 5.

info_b

Estableix un punt d'interrupció

Si voleu posar un punt d'interrupció en línies diferents, podeu escriure b número_línia .Per defecte, la llista o l mostrar només les 10 primeres línies.

Veure punts d'interrupció

Per veure els punts d'interrupció, escriviu info b.

desactivar

Veure punts d'interrupció

Desactiva un punt d'interrupció

Un cop fet l'anterior, suposem que has canviat d'opinió i vols tornar. Escriviu desactivar b.

habilitar-1

Desactiva un punt d'interrupció

Torneu a activar un punt d'interrupció desactivat

Tal com està marcat al cercle blau, Enb es converteix en n per a discapacitats. 9. Per tornar a activar el punt d'interrupció desactivat recentment. Escriviu enable b.

primer_execució

Torneu a activar un punt d'interrupció desactivat

Executeu el codi

Executeu el codi escrivint run o r. Si no heu establert cap punt d'interrupció, l'ordre d'execució simplement executarà el programa complet.

valor_imprimit_x

Executeu el codi

Imprimeix els valors de les variables

Per veure el valor de la variable, escriviu print nom_variable o pàg nom_variable .

Imprimeix els valors de les variables

superíndex en il·lustrador

L'anterior mostra els valors emmagatzemats a x en el moment de l'execució.

Canviar els valors de les variables

Per canviar el valor de la variable a gdb i continuar l'execució amb el valor modificat, escriviu set nom_variable .

Sortida de depuració

A continuació, la captura de pantalla mostra els valors de les variables a partir dels quals és bastant comprensible el motiu pel qual hem obtingut un valor d'escombraries com a sortida. En cada execució de. /prova rebrem una sortida diferent.

Exercici: proveu d'utilitzar el conjunt x = 0 a gdb a la primera execució i vegeu la sortida de c.

Sortida de depuració

GDB ofereix moltes més maneres de depurar i entendre el vostre codi, com ara examinar la pila, la memòria, els fils, manipular el programa, etc. Espero que l'exemple anterior us ajudi a començar amb gdb.

Conclusió

En aquest article hem parlat de GDB (GNU Debugger), que és una potent eina a Linux que s'utilitza per depurar programes C. Hem comentat alguns dels passos següents perquè puguem compilar el vostre codi amb informació de depuració, executar GDB, establir un punt d'interrupció, examinar variables i analitzar el comportament del programa. També hem parlat de les característiques de GDB, com ara l'examen de codi, la gestió de punts d'interrupció, la manipulació de variables i el control d'execució del programa, que ens permeten depurar i resoldre problemes de manera eficient.