Programación C++ – Uso de Depuradores

Por supuesto, aquí tienes algunos ejemplos de situaciones de depuración comunes y cómo podrías abordarlas utilizando un depurador como GDB:

1. Encontrar el valor incorrecto de una variable:

Supongamos que tienes el siguiente código y quieres averiguar por qué resultado tiene un valor incorrecto:

#include <iostream>

int main() {
    int a = 5;
    int b = 10;
    int resultado = a + b + 42;

    std::cout << "Resultado: " << resultado << std::endl;

    return 0;
}

Pasos de depuración con GDB:

  1. Compila el programa con información de depuración: g++ -g programa.cpp -o programa.
  2. Inicia GDB: gdb programa.
  3. Establece un punto de ruptura en la línea resultado = a + b + 42;: break programa.cpp:6.
  4. Ejecuta el programa con run.
  5. Cuando el programa se detenga en el punto de ruptura, usa print a, print b y print resultado para verificar los valores de las variables.
  6. Usa next para avanzar a la siguiente línea y ver cómo cambian los valores de las variables.

2. Encontrar un error en un bucle:

#include <iostream>

int main() {
    int suma = 0;

    for (int i = 0; i < 10; ++i) {
        suma += i;
    }

    std::cout << "Suma: " << suma << std::endl;

    return 0;
}

Pasos de depuración con GDB:

  1. Compila el programa con información de depuración: g++ -g programa.cpp -o programa.
  2. Inicia GDB: gdb programa.
  3. Establece un punto de ruptura en el bucle: break programa.cpp:7.
  4. Ejecuta el programa con run.
  5. Cuando el programa se detenga en el punto de ruptura, usa print i y print suma para verificar los valores de las variables.
  6. Usa next para avanzar en cada iteración del bucle y observar cómo cambian los valores de las variables.

3. Encontrar un error en un condicional:

#include <iostream>

int main() {
    int numero = 15;

    if (numero > 10) {
        std::cout << "Número es mayor que 10" << std::endl;
    } else {
        std::cout << "Número no es mayor que 10" << std::endl;
    }

    return 0;
}

Pasos de depuración con GDB:

  1. Compila el programa con información de depuración: g++ -g programa.cpp -o programa.
  2. Inicia GDB: gdb programa.
  3. Establece un punto de ruptura en el condicional: break programa.cpp:7.
  4. Ejecuta el programa con run.
  5. Cuando el programa se detenga en el punto de ruptura, usa print numero para verificar el valor de la variable.
  6. Usa next para avanzar a través del condicional y observar qué rama se ejecuta.

4. Encontrar un error en un bucle while:

#include <iostream>

int main() {
    int contador = 0;

    while (contador < 5) {
        std::cout << "Contador: " << contador << std::endl;
    }

    return 0;
}

Pasos de depuración con GDB:

  1. Compila el programa con información de depuración: g++ -g programa.cpp -o programa.
  2. Inicia GDB: gdb programa.
  3. Establece un punto de ruptura en el bucle: break programa.cpp:7.
  4. Ejecuta el programa con run.
  5. Cuando el programa se detenga en el punto de ruptura, usa print contador para verificar el valor de la variable.
  6. Usa next para avanzar en cada iteración del bucle y observar cómo cambia el valor de la variable contador.

5. Encontrar un error en una función:

#include <iostream>

int calcularSuma(int a, int b) {
    return a - b;
}

int main() {
    int x = 10;
    int y = 5;

    int suma = calcularSuma(x, y);

    std::cout << "Suma: " << suma << std::endl;

    return 0;
}

Pasos de depuración con GDB:

  1. Compila el programa con información de depuración: g++ -g programa.cpp -o programa.
  2. Inicia GDB: gdb programa.
  3. Establece un punto de ruptura en la función calcularSuma: break programa.cpp:4.
  4. Ejecuta el programa con run.
  5. Cuando el programa se detenga en el punto de ruptura, usa print a, print b y print $retval (valor de retorno) para verificar los valores de las variables.
  6. Usa next para avanzar a través de la función y observar cómo se calcula la suma.

6. Encontrar un error en el manejo de un vector:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numeros = {1, 2, 3, 4, 5};

    for (int i = 0; i <= numeros.size(); ++i) {
        std::cout << numeros[i] << " ";
    }

    return 0;
}

Pasos de depuración con GDB:

  1. Compila el programa con información de depuración: g++ -g programa.cpp -o programa.
  2. Inicia GDB: gdb programa.
  3. Establece un punto de ruptura en el bucle for: break programa.cpp:8.
  4. Ejecuta el programa con run.
  5. Cuando el programa se detenga en el punto de ruptura, usa print i y print numeros[i] para verificar los valores de las variables.
  6. Usa next para avanzar en cada iteración del bucle y observar cómo cambian los valores de las variables.

Estos son solo ejemplos simples de situaciones de depuración. En programas más grandes y complejos, el depurador te ayudará a identificar errores en el flujo de ejecución, valores de variables incorrectos y otros problemas que puedan surgir durante el desarrollo.

Pueder ir al artículo principal:

Códigos Sencillos hechos en C++

Deja un comentario