COMPARTE ESTE ARTÍCULO

Depurar programas en C++ es una tarea esencial para identificar y corregir errores, mejorar el rendimiento y comprender mejor el flujo del código. Una de las herramientas más poderosas para depurar en C++ es GDB, el depurador GNU. En esta guía, te mostraré cómo compilar y tracear un programa en C++ usando G++ y GDB.

¿Qué es GDB?

GDB (GNU Debugger) es una herramienta que permite ejecutar un programa paso a paso, inspeccionar variables, establecer puntos de interrupción (breakpoints) y diagnosticar errores. Es compatible con varios lenguajes de programación, incluyendo C y C++.

Pasos para Depurar un Programa en C++ con G++ y GDB

1. Compilar el programa con opciones de depuración

Antes de poder usar GDB, es necesario compilar tu programa C++ con la opción de depuración activada. Para ello, debes utilizar la opción -g al compilar el código con G++.

g++ -g -o mi_programa mi_programa.cpp

Esto genera un archivo ejecutable llamado mi_programa que incluye información de depuración, lo que permitirá a GDB leer y seguir el código fuente.

2. Ejecutar el programa en GDB

Una vez compilado, puedes iniciar GDB con el comando:

gdb ./mi_programa

Esto abrirá GDB y cargará el ejecutable mi_programa para ser depurado.

3. Iniciar la depuración

Dentro de GDB, puedes ejecutar el programa directamente utilizando el comando run. Si tu programa requiere argumentos, puedes añadirlos después de run:

(gdb) run

Si el programa necesita argumentos de entrada:

(gdb) run arg1 arg2

4. Agregar Breakpoints (Puntos de Interrupción)

Un breakpoint detiene la ejecución del programa en una línea específica o en una función. Esto te permite inspeccionar el estado del programa en ese punto.

  • Para agregar un breakpoint en una línea de código:
  (gdb) break NOMBRE_DEL_ARCHIVO.cpp:LINEA

Ejemplo:

  (gdb) break mi_programa.cpp:10
  • Para añadir un breakpoint en una función específica:
  (gdb) break nombre_funcion

5. Ejecutar el programa paso a paso

Una vez que el programa se detenga en un breakpoint, puedes usar los siguientes comandos para avanzar por el código:

  • step (s): Ejecuta la siguiente línea de código y entra en cualquier función llamada.
  (gdb) step
  • next (n): Ejecuta la siguiente línea de código sin entrar en las funciones.
  (gdb) next
  • continue (c): Continúa la ejecución hasta el próximo breakpoint o hasta que el programa finalice.
  (gdb) continue

6. Inspeccionar Variables

Durante la depuración, puedes inspeccionar el valor de las variables en cualquier momento:

  • Imprimir el valor de una variable:
  (gdb) print nombre_variable
  • Ver las variables locales de la función actual:
  (gdb) info locals
  • Ver todas las variables y sus tipos:
  (gdb) info variables

7. Salir de GDB

Una vez que termines de depurar, puedes salir de GDB usando el comando:

(gdb) quit

Ejemplo Completo: Depuración de un Programa en C++

Aquí tienes un ejemplo completo de un programa en C++ y cómo depurarlo con GDB:

#include <iostream>
using namespace std;

int main() {
    int a = 5;
    int b = 10;
    int c = a + b;
    cout << "Resultado: " << c << endl;
    return 0;
}

Paso 1: Compilar con G++ y la opción de depuración

g++ -g -o mi_programa mi_programa.cpp

Paso 2: Iniciar GDB

gdb ./mi_programa

Paso 3: Establecer un breakpoint en la línea donde se realiza la suma

(gdb) break mi_programa.cpp:5

Paso 4: Ejecutar el programa

(gdb) run

Paso 5: Inspeccionar las variables cuando el programa se detenga

(gdb) print a
(gdb) print b
(gdb) print c

Paso 6: Continuar la ejecución

(gdb) continue

Paso 7: Salir de GDB

(gdb) quit

Conclusión

GDB es una herramienta esencial para depurar programas en C++. Combinado con G++, te permite inspeccionar el estado de tu programa en cualquier momento, identificar errores y mejorar el código de manera eficiente. Usar GDB no solo te ahorrará tiempo, sino que también te ayudará a entender mejor el flujo de ejecución y las interacciones en tu código.

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Categories:

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
error: CONTENIDO PROTEGIDO