Saltar a contenido

Última actualización:2026-10-12

Depurar programas C++ con GDB

Al utilizar GNU Debugger (GDB) para depurar código C, descubrirás que es el depurador más popular en sistemas UNIX para depurar programas en C y C++. A continuación, una explicación sencilla y clara de cómo usar GDB para depurar código C:

En primer lugar, cambie en la línea de comandos a la carpeta actual que contiene el código y ejecute el siguiente comando:

gcc -g -Wall code.c -o output

La opción -g es necesaria para poder utilizar la herramienta GDB. La opción -Wall sirve para mostrar los mensajes de advertencia. Esto creará un archivo ejecutable llamado "output".

A continuación, ejecute el siguiente comando para abrir el diálogo de GDB y obtener la información de símbolos del archivo output (dicho de forma sencilla, configurar todo el entorno para depurar code.c):

gdb output

Los siguientes comandos pueden ayudarle durante la depuración:

  • list: lista el código fuente.
  • b x: establece un breakpoint en x. x puede ser el nombre de un módulo o un número de línea. Por ejemplo, x puede ser el nombre de una función como main.
  • r: ejecuta el programa (hasta el breakpoint) y entrega el resultado. Es decir, ejecuta el código hasta el breakpoint y genera el resultado. [Si hay argumentos: r argumento1 argumento2 argumento3 ...]
  • info breakpoints x: da información detallada del breakpoint x.
  • info breakpoints: da información detallada de todos los breakpoints.
  • delete x: elimina el breakpoint x.
  • disable x y enable x: deshabilita y habilita el breakpoint x.
  • print p: imprime el valor de la variable p.
  • display p: muestra el valor de la variable p después de cada ejecución (automatiza todo el proceso).
  • c: continúa la ejecución del programa (saltándose las iteraciones de bucles for, etc.). Use c-iter1 para saltar la primera iteración, vuelva a escribir c para saltar la segunda, y así sucesivamente.
  • También puede usar condiciones adicionales, por ejemplo b x if (y > m), que significa establecer un breakpoint en la línea x si el valor de y es mayor que m.
  • GDB también permite establecer breakpoints en varios archivos. Por ejemplo, si program.c llama a una función definida en function.c, puede usar b function.c:x para poner un breakpoint en la línea x de function.c.
  • bt: se usa para retroceder por la ruta de ejecución del código. bt devuelve una lista indexada que muestra los procesos por los que ha pasado el código. Por ejemplo: #0 descripción del proceso 0, #1 descripción del proceso 1, y así sucesivamente, donde 0 es el proceso más reciente.
  • Escriba f x para saltar al proceso x (f 0 salta al proceso 0), y obtendrá los valores de las variables en el momento de la ejecución de la función correspondiente.
  • s: se usa para entrar en una función y obtener más detalles.
  • next: se usa para ejecutar el código línea por línea.

Temas relacionados

Comentarios