Ú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 xyenable 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.). Usec-iter1para saltar la primera iteración, vuelva a escribircpara 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:xpara 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.btdevuelve 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 xpara saltar al proceso x (f 0salta 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¶
- Construir proyectos C++ con Bazel | C++那些事
- Depuración conjunta de Bazel y LLDB | C++那些事
- CMake: introducción y práctica | C++那些事
- Introducción a Conan, gestor de paquetes de C++ | C++那些事
- C++ Insights: observación en tiempo de compilación | C++那些事
- C++ Jupyter Notebook interactivo | C++那些事
- Convertir string a int en C++ | C++那些事
- dbg-macro, macro de depuración para C++ | C++那些事
- Explicación detallada de las opciones de compilación de GCC | C++那些事
- Depuración con la extensión Python de GDB | C++那些事